### Install Documentation Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/man/CMakeLists.txt Installs generated man pages or HTML documentation based on the DOCUMENTATION_FORMAT variable and whether libzip is configured for installation. ```cmake INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${SOURCE}.3 DESTINATION ${CMAKE_INSTALL_DOCDIR}/${PROJECT_NAME} RENAME ${TARGET}.html) ``` ```cmake INSTALL(FILES ${PROJECT_BINARY_DIR}/man/${SOURCE}.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 RENAME ${TARGET}.3) ``` -------------------------------- ### Setup TAP Device for Ping Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/picotcp/README.md Commands to create and configure a TAP network interface, which is necessary for the ping example to function. The IP address is assigned to the tap0 interface. ```bash sudo tunctl -u sudo ifconfig tap0 192.168.5.5 ``` -------------------------------- ### Install Target for General Binaries Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Installs the target project to the binary directory for general installations. ```cmake install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_BINDIR}") ``` -------------------------------- ### Install Boost.Nowide with CMake Source: https://github.com/flyinghead/flycast/blob/master/core/deps/nowide/README.md Instructions for building and installing Boost.Nowide using CMake. Ensure the installation prefix is added to CMAKE_PREFIX_PATH for find_package to work. ```bash mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local make install ``` -------------------------------- ### Install Linux Desktop Files Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Installs man page, desktop entry, icon, and metainfo files for Linux builds. ```cmake install(FILES shell/linux/man/${PROJECT_NAME}.1 DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" ) install(FILES shell/linux/${PROJECT_NAME}.desktop DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" ) install(FILES shell/linux/${PROJECT_NAME}.png DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pixmaps" ) install(FILES shell/linux/org.${PROJECT_NAME}.Flycast.metainfo.xml DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" ) ``` -------------------------------- ### Install xxHash Library and Utilities Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/cmake_unofficial/CMakeLists.txt Installs the xxHash library, headers, and the xxhsum utility. It also configures and installs package configuration files and pkg-config files for external use. ```cmake if(NOT XXHASH_BUNDLED_MODE) include(GNUInstallDirs) install(TARGETS xxhash EXPORT xxHashTargets RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") install(FILES "${XXHASH_DIR}/xxhash.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") install(FILES "${XXHASH_DIR}/xxh3.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") if(DISPATCH) install(FILES "${XXHASH_DIR}/xxh_x86dispatch.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") endif() if(XXHASH_BUILD_XXHSUM) install(TARGETS xxhsum EXPORT xxHashTargets RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") install(FILES "${XXHSUM_DIR}/xxhsum.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1") endif(XXHASH_BUILD_XXHSUM) include(CMakePackageConfigHelpers) set(xxHash_VERSION_CONFIG "${PROJECT_BINARY_DIR}/xxHashConfigVersion.cmake") set(xxHash_PROJECT_CONFIG "${PROJECT_BINARY_DIR}/xxHashConfig.cmake") set(xxHash_TARGETS_CONFIG "${PROJECT_BINARY_DIR}/xxHashTargets.cmake") set(xxHash_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/xxHash/") write_basic_package_version_file(${xxHash_VERSION_CONFIG} VERSION ${XXHASH_VERSION_STRING} COMPATIBILITY AnyNewerVersion) configure_package_config_file( ${PROJECT_SOURCE_DIR}/xxHashConfig.cmake.in ${xxHash_PROJECT_CONFIG} INSTALL_DESTINATION ${xxHash_CONFIG_INSTALL_DIR}) export(EXPORT xxHashTargets FILE ${xxHash_TARGETS_CONFIG} NAMESPACE ${PROJECT_NAME}::) install(FILES ${xxHash_PROJECT_CONFIG} ${xxHash_VERSION_CONFIG} DESTINATION ${xxHash_CONFIG_INSTALL_DIR}) install(EXPORT xxHashTargets DESTINATION ${xxHash_CONFIG_INSTALL_DIR} NAMESPACE ${PROJECT_NAME}::) # configure and install pkg-config include(JoinPaths.cmake) set(PREFIX ${CMAKE_INSTALL_PREFIX}) set(EXECPREFIX "\${prefix}") join_paths(INCLUDEDIR "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") join_paths(LIBDIR "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") set(VERSION "${XXHASH_VERSION_STRING}") configure_file(${XXHASH_DIR}/libxxhash.pc.in ${CMAKE_BINARY_DIR}/libxxhash.pc @ONLY) install(FILES ${CMAKE_BINARY_DIR}/libxxhash.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) endif(NOT XXHASH_BUNDLED_MODE) ``` -------------------------------- ### Basic libzip Build and Install with CMake Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/INSTALL.md Standard procedure to build and install libzip. Ensure you are in the root directory of the libzip source code. ```sh mkdir build cd build cmake .. make make test make install ``` -------------------------------- ### Install Flycast on Linux via Flatpak Source: https://github.com/flyinghead/flycast/blob/master/README.md Install Flycast using Flatpak on Linux systems. Ensure Flatpak is set up first. ```bash flatpak install -y org.flycast.Flycast ``` -------------------------------- ### Install picoTCP and dependencies on Ubuntu Source: https://github.com/flyinghead/flycast/blob/master/core/deps/picotcp/README.md This command installs necessary development tools and libraries for picoTCP on Ubuntu 14.04. It then clones the picoTCP repository and compiles it with TAP interface support. ```bash sudo apt-get install git check vde2 libvdeplug2-dev libpcap0.8-dev openvpn wireshark git clone https://github.com/tass-belgium/picotcp cd picotcp make TAP=1 cd .. ``` -------------------------------- ### Start Discovering AltServers (Swift) Source: https://github.com/flyinghead/flycast/blob/master/shell/apple/emulator-ios/AltKit/README.md Initiates the discovery of AltServers on the local network. Ensure `ServerManager` is imported. ```swift import AltKit ServerManager.shared.startDiscovering() ``` -------------------------------- ### Install IPA for iOS Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Installs the generated .ipa file for iOS builds. ```cmake install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$-${CMAKE_OSX_SYSROOT}/Flycast.ipa" TYPE BIN) ``` -------------------------------- ### Install App Icons for Linux Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Installs application icons of various sizes to the hicolor icon theme directory for Linux. ```cmake foreach(size 16 32 64 128 256 512) install(FILES shell/apple/emulator-osx/emulator-osx/Images.xcassets/AppIcon.appiconset/Icon-${size}.png DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${size}x${size}/apps" RENAME ${PROJECT_NAME}.png ) endforeach() ``` -------------------------------- ### Install libzip Configuration Files Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/CMakeLists.txt Installs essential configuration files for libzip, including the zipconf.h header, the main config file, and the version config file, when LIBZIP_DO_INSTALL is enabled. ```cmake install(FILES ${PROJECT_BINARY_DIR}/zipconf.h DESTINATION include) install(FILES ${PROJECT_BINARY_BINARY_DIR}/${PROJECT_NAME}-config.cmake ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) ``` -------------------------------- ### GLSL Swizzle Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/manual.md Demonstrates GLSL swizzle syntax for accessing and assigning vector components. Note that 'D.rsz' is an invalid example. ```glsl vec4 A; vec2 B; B.yx = A.wy; B = A.xx; vec3 C = A.bgr; vec3 D = B.rsz; // Invalid, won't compile ``` -------------------------------- ### Install Target for Libretro Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Installs the target project to the libretro destination directory when building for Libretro. ```cmake install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_LIBDIR}/libretro") ``` -------------------------------- ### Start Discovering AltServers (Objective-C) Source: https://github.com/flyinghead/flycast/blob/master/shell/apple/emulator-ios/AltKit/README.md Initiates the discovery of AltServers on the local network using Objective-C. Ensure AltKit framework is imported. ```objective-c @import AltKit; [[ALTServerManager sharedManager] startDiscovering]; ``` -------------------------------- ### GLM Configuration Log Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/manual.md An example of the configuration log output generated when GLM_FORCE_MESSAGES is enabled. It details version, C++ standard, compiler, architecture, and feature flags. ```text GLM: version 0.9.9.1 GLM: C++ 17 with extensions GLM: Clang compiler detected GLM: x86 64 bits with AVX instruction set build target GLM: Linux platform detected GLM: GLM_FORCE_SWIZZLE is undefined. swizzling functions or operators are disabled. GLM: GLM_FORCE_SIZE_T_LENGTH is undefined. .length() returns a glm::length_t, a typedef of int following GLSL. GLM: GLM_FORCE_UNRESTRICTED_GENTYPE is undefined. Follows strictly GLSL on valid function genTypes. GLM: GLM_FORCE_DEPTH_ZERO_TO_ONE is undefined. Using negative one to one depth clip space. GLM: GLM_FORCE_LEFT_HANDED is undefined. Using right handed coordinate system. ``` -------------------------------- ### Run Flycast on Linux via Flatpak Source: https://github.com/flyinghead/flycast/blob/master/README.md Launch Flycast after installation using the Flatpak runtime. ```bash flatpak run org.flycast.Flycast ``` -------------------------------- ### Build listdevices Executable Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Configures the 'listdevices' executable, linking it against the shared miniupnpc library and installing it to the binary directory if not disabled. ```cmake add_executable (listdevices src/listdevices.c) target_link_libraries (listdevices PRIVATE libminiupnpc-shared) target_include_directories(listdevices PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) if (NOT UPNPC_NO_INSTALL) install (TARGETS listdevices RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() endif () ``` -------------------------------- ### Install libzip Exported Targets Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/CMakeLists.txt Installs the exported targets for libzip, making them available for other projects to find and link against when LIBZIP_DO_INSTALL is enabled. ```cmake install(EXPORT ${PROJECT_NAME}-targets NAMESPACE libzip:: FILE ${PROJECT_NAME}-targets.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) ``` -------------------------------- ### Install NRO for Nintendo Switch Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Installs the generated .nro file to the binary directory for Nintendo Switch builds when not using Libretro. ```cmake install(FILES ${CMAKE_BINARY_DIR}/flycast.nro DESTINATION "${CMAKE_INSTALL_BINDIR}") ``` -------------------------------- ### Install Library Targets Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libunwind/libunwind/src/CMakeLists.txt Configures the installation of library targets (shared, static, or both) based on the LIBUNWIND_INSTALL_LIBRARY flag. It specifies destinations for libraries, archives, and runtime components. ```cmake if (LIBUNWIND_INSTALL_LIBRARY) install(TARGETS ${LIBUNWIND_INSTALL_TARGETS} LIBRARY DESTINATION ${LIBUNWIND_INSTALL_LIBRARY_DIR} COMPONENT unwind ARCHIVE DESTINATION ${LIBUNWIND_INSTALL_LIBRARY_DIR} COMPONENT unwind RUNTIME DESTINATION ${LIBUNWIND_INSTALL_RUNTIME_DIR} COMPONENT unwind) endif() ``` -------------------------------- ### Compile PicoTCP Ping Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/picotcp/README.md These commands compile the C source file into an object file and then link it with the PicoTCP static library to create an executable. ```bash gcc -c -o main.o -I../picotcp/build/include main.c gcc -o main.elf main.o ../picotcp/build/lib/libpicotcp.a ``` -------------------------------- ### Custom Install Target for Single-Configuration Generators Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libunwind/libunwind/src/CMakeLists.txt Creates custom targets 'install-unwind' and 'install-unwind-stripped' for single-configuration CMake generators when installation is enabled. These targets invoke the main CMake install script with specific components and options. ```cmake if (NOT CMAKE_CONFIGURATION_TYPES AND LIBUNWIND_INSTALL_LIBRARY) add_custom_target(install-unwind DEPENDS unwind COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=unwind -P "${LIBUNWIND_BINARY_DIR}/cmake_install.cmake") add_custom_target(install-unwind-stripped DEPENDS unwind COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=unwind -DCMAKE_INSTALL_DO_STRIP=1 -P "${LIBUNWIND_BINARY_DIR}/cmake_install.cmake") if(LIBUNWIND_INSTALL_HEADERS) add_dependencies(install-unwind install-unwind-headers) add_dependencies(install-unwind-stripped install-unwind-headers-stripped) endif() endif() ``` -------------------------------- ### Matrix Transform Setup (GLM) Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/manual.md Sets up a combined Projection, View, and Model (MVP) matrix for rendering. This function is useful for setting uniforms in graphics pipelines. ```cpp #include // vec3, vec4, ivec4, mat4 #include // translate, rotate, scale, perspective #include // value_ptr void setUniformMVP(GLuint Location, glm::vec3 const& Translate, glm::vec3 const& Rotate) { glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); glm::mat4 ViewTranslate = glm::translate( glm::mat4(1.0f), Translate); glm::mat4 ViewRotateX = glm::rotate( ViewTranslate, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f)); glm::mat4 View = glm::rotate(ViewRotateX, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f)); glm::mat4 Model = glm::scale( glm::mat4(1.0f), glm::vec3(0.5f)); glm::mat4 MVP = Projection * View * Model; glUniformMatrix4fv(Location, 1, GL_FALSE, glm::value_ptr(MVP)); } ``` -------------------------------- ### Include Standard CMake Modules Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Includes standard CMake modules for installation directories and resource compilation. ```cmake include(GNUInstallDirs) include(CMakeRC) ``` -------------------------------- ### Build Flycast from Source on Linux Source: https://github.com/flyinghead/flycast/blob/master/README.md Clone the Flycast repository and build the emulator from source using CMake and Make. Ensure all dependencies are installed. ```bash $ git clone --recursive https://github.com/flyinghead/flycast.git $ cd flycast $ mkdir build && cd build $ cmake .. $ make ``` -------------------------------- ### Matrix Transformation Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/manual.md Demonstrates the use of matrix transformation functions, such as translating a model matrix. Include to use these features. ```cpp #include #include int foo() { glm::vec4 Position = glm::vec4(glm:: vec3(0.0f), 1.0f); glm::mat4 Model = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f)); glm::vec4 Transformed = Model * Position; ... return 0; } ``` -------------------------------- ### Build upnpc-shared Executable Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Configures the 'upnpc-shared' executable, linking it against the shared miniupnpc library and installing it to the binary directory if not disabled. ```cmake if (UPNPC_BUILD_SAMPLE) add_executable (upnpc-shared src/upnpc.c) target_link_libraries (upnpc-shared PRIVATE libminiupnpc-shared) target_include_directories(upnpc-shared PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) if (NOT UPNPC_NO_INSTALL) install (TARGETS upnpc-shared RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() endif () ``` -------------------------------- ### Build xxHash Targets Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/cmake_unofficial/README.md Build and install xxHash using CMake. This method allows for external management of the xxHash library. ```cmake cd mkdir build cd build cmake ../cmake_unofficial [options] cmake --build . cmake --build . --target install #optional ``` -------------------------------- ### Install Flycast on macOS via Homebrew Source: https://github.com/flyinghead/flycast/blob/master/README.md Install Flycast on macOS using the Homebrew package manager. Homebrew must be installed prior to this command. ```bash brew install --cask flycast ``` -------------------------------- ### Conditional Installation of libunwind Headers Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libunwind/libunwind/include/CMakeLists.txt Installs the libunwind header files if the LIBUNWIND_INSTALL_HEADERS variable is set to true. It iterates through the defined files and installs them into the specified include directory, preserving their subdirectory structure. ```cmake if(LIBUNWIND_INSTALL_HEADERS) foreach(file ${files}) get_filename_component(dir ${file} DIRECTORY) install(FILES ${file} DESTINATION "${LIBUNWIND_INSTALL_INCLUDE_DIR}/${dir}" COMPONENT unwind-headers PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) endforeach() if(NOT CMAKE_CONFIGURATION_TYPES) add_custom_target(install-unwind-headers DEPENDS unwind-headers COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=unwind-headers -P "${LIBUNWIND_BINARY_DIR}/cmake_install.cmake") add_custom_target(install-unwind-headers-stripped DEPENDS install-unwind-headers) endif() endif() ``` -------------------------------- ### Collision Test with Filter and Memory Constraints Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/tests/collisions/README.md Example command for running a collision test with a specified number of hashes and enabling the filter, suitable for systems with limited RAM. ```bash ./collisionsTest --nbh=14G --filter NameOfHash ``` -------------------------------- ### Build Static Library Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Defines and configures a static library 'libminiupnpc-static' using the MINIUPNPC_SOURCES. Sets include directories and properties for export and output naming. ```cmake if (UPNPC_BUILD_STATIC) add_library (libminiupnpc-static STATIC ${MINIUPNPC_SOURCES}) target_include_directories (libminiupnpc-static PUBLIC $ $) if (NOT UPNPC_BUILD_SHARED) add_library (miniupnpc::miniupnpc ALIAS libminiupnpc-static) endif() set_target_properties (libminiupnpc-static PROPERTIES EXPORT_NAME miniupnpc) if (WIN32 AND NOT MINGW) set_target_properties (libminiupnpc-static PROPERTIES OUTPUT_NAME "libminiupnpc") else() set_target_properties (libminiupnpc-static PROPERTIES OUTPUT_NAME "miniupnpc") endif() target_link_libraries (libminiupnpc-static PRIVATE miniupnpc-private) target_include_directories(libminiupnpc-static INTERFACE $) target_compile_definitions(libminiupnpc-static PUBLIC MINIUPNP_STATICLIB) if (NOT UPNPC_NO_INSTALL) install (TARGETS miniupnpc-private EXPORT miniupnpc-private) install (EXPORT miniupnpc-private DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/miniupnpc" NAMESPACE miniupnpc::) install (TARGETS libminiupnpc-static EXPORT libminiupnpc-static RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install (EXPORT libminiupnpc-static DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/miniupnpc" NAMESPACE miniupnpc::) endif() if (UPNPC_BUILD_SAMPLE) add_executable (upnpc-static src/upnpc.c) target_link_libraries (upnpc-static PRIVATE libminiupnpc-static) target_include_directories(upnpc-static PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) if (NOT UPNPC_NO_INSTALL) install (TARGETS upnpc-static RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() endif () endif () ``` -------------------------------- ### Configure LIT Site Configuration Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libunwind/libunwind/test/CMakeLists.txt Sets up the 'lit.site.cfg' file for the LIT test runner using provided configuration files. ```cmake configure_lit_site_cfg( "${LIBUNWIND_TEST_CONFIG}" ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py") ``` -------------------------------- ### XXH64 Collision Test Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/tests/collisions/README.md Example result of a collision test for the XXH64 algorithm with specific input length and number of hashes. ```text | __XXH64__ | 255 | 100 Gi | 312.5 | 294 | | ``` -------------------------------- ### XXH3 Collision Test Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/tests/collisions/README.md Example result of a collision test for the XXH3 algorithm with specific input length and number of hashes. ```text | __XXH3__ | 255 | 100 Gi | 312.5 | 326 | | ``` -------------------------------- ### Out-of-Tree Build for libunwind Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libunwind/libunwind/docs/BuildingLibunwind.md This example demonstrates an out-of-tree build for libunwind, which is beneficial for keeping build artifacts separate from the source code. It requires checking out LLVM and libunwind separately and setting environment variables for the C and C++ compilers. ```bash $ cd where-you-want-libunwind-to-live $ # Check out llvm, and libunwind $ ``svn co https://llvm.org/svn/llvm-project/llvm/trunk llvm`` $ ``svn co https://llvm.org/svn/llvm-project/libunwind/trunk libunwind`` $ cd where-you-want-to-build $ mkdir build && cd build $ export CC=clang CXX=clang++ $ cmake -DLLVM_PATH=path/to/llvm \ path/to/libunwind $ make ``` -------------------------------- ### Find xxHash Package in CMake Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/cmake_unofficial/README.md Integrate xxHash into a downstream CMake project by finding the installed package. Ensure xxHash is installed first. ```cmake find_package(xxHash 0.7 CONFIG REQUIRED) ... target_link_libraries(MyTarget PRIVATE xxHash::xxhash) ``` -------------------------------- ### Initialize Nowide Arguments Source: https://github.com/flyinghead/flycast/blob/master/core/deps/nowide/README.md Use boost::nowide::args to convert input arguments to UTF-8 on Windows. An instance of this class must be created. ```cpp int main(int argc, char **argv) { boost::nowide::args _(argc, argv); // Must use an instance! ... } ``` -------------------------------- ### xxHash 64-bit Initialization for Small Inputs Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/doc/xxhash_spec.md Performs a simplified initialization using a single accumulator when the input is less than 32 bytes. The algorithm then proceeds directly to step 4. ```c u64 acc = seed + PRIME64_5; ``` -------------------------------- ### Install Find Modules for libzip Dependencies Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/CMakeLists.txt Installs CMake Find modules required by libzip-config.cmake to resolve dependencies like Nettle, zstd, and MbedTLS. ```cmake install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindNettle.cmake ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Findzstd.cmake ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindMbedTLS.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/libzip/modules ) ``` -------------------------------- ### XXH128 Collision Test Example (No Collisions) Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/tests/collisions/README.md Example result of a collision test for the XXH128 algorithm, demonstrating zero collisions as expected for a 128-bit hash. ```text | __XXH128__ | 255 | 100 Gi | 0.0 | 0 | a 128-bit hash is expected to generate 0 collisions | ``` -------------------------------- ### XXH128 High64 Collision Test Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/tests/collisions/README.md Example result of a collision test for the high64 variant of XXH128 with specific input length and number of hashes. ```text | __XXH128__ high64| 512 | 100 Gi | 312.5 | 325 | | ``` -------------------------------- ### Configure Info.plist for Bonjour Services Source: https://github.com/flyinghead/flycast/blob/master/shell/apple/emulator-ios/AltKit/README.md Add these entries to your app's `Info.plist` file to enable Bonjour services for AltServer discovery. ```xml NSBonjourServices _altserver._tcp ``` -------------------------------- ### XXH128 Low64 Collision Test Example Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/tests/collisions/README.md Example result of a collision test for the low64 variant of XXH128 with specific input length and number of hashes. ```text | __XXH128__ low64 | 512 | 100 Gi | 312.5 | 321 | | ``` -------------------------------- ### iOS Build Configuration Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Sets up the build for iOS, including Swift version, linking AltKit, and adding various source files and resources specific to the iOS platform. ```cmake elseif(APPLE) string(TIMESTAMP YEAR "%Y") string(REGEX MATCH "^[^-]+" TAG_VERSION ${GIT_VERSION}) if(IOS) set_property(TARGET ${PROJECT_NAME} PROPERTY XCODE_ATTRIBUTE_SWIFT_VERSION "5.0") add_subdirectory(shell/apple/emulator-ios/AltKit) target_link_libraries(${PROJECT_NAME} PRIVATE AltKit) target_sources(${PROJECT_NAME} PRIVATE shell/apple/common/http_client.mm shell/apple/common/util.mm shell/apple/emulator-ios/emulator/AppDelegate.h shell/apple/emulator-ios/emulator/AppDelegate.mm shell/apple/emulator-ios/emulator/ios_main.mm shell/apple/emulator-ios/emulator/ios_gamepad.h shell/apple/emulator-ios/emulator/ios_keyboard.h shell/apple/emulator-ios/emulator/ios_mouse.h shell/apple/emulator-ios/emulator/FlycastViewController.h shell/apple/emulator-ios/emulator/FlycastViewController.mm shell/apple/emulator-ios/emulator/PadViewController.h shell/apple/emulator-ios/emulator/PadViewController.mm shell/apple/emulator-ios/emulator/EditPadViewController.h shell/apple/emulator-ios/emulator/EditPadViewController.mm shell/apple/emulator-ios/emulator/EmulatorView.h shell/apple/emulator-ios/emulator/EmulatorView.mm shell/apple/emulator-ios/emulator/main.m shell/apple/emulator-ios/emulator/iCade-iOS/iCadeReaderView.h shell/apple/emulator-ios/emulator/iCade-iOS/iCadeReaderView.m shell/apple/emulator-ios/emulator/iCade-iOS/iCadeState.h) target_compile_options(${PROJECT_NAME} PRIVATE $<$:-fobjc-arc -fmodules>) set_source_files_properties(shell/apple/emulator-ios/emulator/FlycastViewController.mm PROPERTIES COMPILE_OPTIONS -fcxx-modules) set_source_files_properties(shell/apple/emulator-ios/emulator/iCade-iOS/iCadeReaderView.m PROPERTIES COMPILE_OPTIONS -fno-objc-arc) set(IOS_RESOURCES shell/apple/emulator-ios/emulator/Images.xcassets shell/apple/emulator-ios/emulator/FlycastStoryboard.storyboard shell/apple/emulator-ios/emulator/LaunchScreen.storyboard shell/apple/emulator-ios/emulator/PadViewController.xib shell/apple/emulator-ios/emulator/EditPadViewController.xib) target_sources(${PROJECT_NAME} PRIVATE ${IOS_RESOURCES}) source_group("Resources" FILES ${IOS_RESOURCES}) set_source_files_properties(${IOS_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "Flycast" MACOSX_BUNDLE YES MACOSX_BUNDLE_EXECUTABLE_NAME "Flycast" MACOSX_BUNDLE_INFO_STRING "" MACOSX_BUNDLE_GUI_IDENTIFIER "com.flyinghead.Flycast" MACOSX_BUNDLE_BUNDLE_NAME "com.flyinghead.Flycast" MACOSX_BUNDLE_LONG_VERSION_STRING "${GIT_VERSION}" MACOSX_BUNDLE_SHORT_VERSION_STRING "${TAG_VERSION}" MACOSX_BUNDLE_BUNDLE_VERSION "${GIT_HASH}" MACOSX_BUNDLE_COPYRIGHT "Copyright © ${YEAR} Flycast contributors. All rights reserved." MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/shell/apple/emulator-ios/plist.in ) ) endif() ``` -------------------------------- ### Configure miniupnpc-tests Interface Library Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Sets up 'miniupnpc-tests' as an interface library for tests, linking against 'miniupnpc-private' and defining 'MINIUPNP_STATICLIB'. ```cmake if (UPNPC_BUILD_TESTS) add_library(miniupnpc-tests INTERFACE) target_link_libraries(miniupnpc-tests INTERFACE miniupnpc-private) target_compile_definitions(miniupnpc-tests INTERFACE MINIUPNP_STATICLIB) ``` -------------------------------- ### Build testportlistingparse Executable Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Configures the 'testportlistingparse' executable, setting include directories and linking against the 'miniupnpc-tests' library. ```cmake add_executable (testportlistingparse src/testportlistingparse.c src/minixml.c src/portlistingparse.c) target_include_directories (testportlistingparse PRIVATE $) target_link_libraries (testportlistingparse PRIVATE miniupnpc-tests) ``` -------------------------------- ### Build testminiwget Executable Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Configures the 'testminiwget' executable, setting include directories and linking against the 'miniupnpc-tests' library. ```cmake add_executable (testminiwget src/testminiwget.c src/miniwget.c src/miniupnpc.c src/minisoap.c src/upnpcommands.c src/minissdpc.c src/upnpreplyparse.c src/minixml.c src/igd_desc_parse.c src/connecthostport.c src/portlistingparse.c src/receivedata.c src/addr_is_reserved.c ) target_include_directories (testminiwget PRIVATE $) target_link_libraries (testminiwget PRIVATE miniupnpc-tests) ``` -------------------------------- ### glm::row (get) Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00293.html Retrieves a specific row from a matrix. ```APIDOC ## glm::row (get) ### Description Get a specific row of a matrix. ### Signature ```cpp template genType::row_type glm::row(genType const & m, length_t index) ``` ### Parameters * `m`: The input matrix. * `index`: The index of the row to retrieve. ``` -------------------------------- ### Build minihttptestserver Executable Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Configures the 'minihttptestserver' executable. ```cmake add_executable (minihttptestserver src/minihttptestserver.c) ``` -------------------------------- ### glm::column (get) Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00293.html Retrieves a specific column from a matrix. ```APIDOC ## glm::column (get) ### Description Get a specific column of a matrix. ### Signature ```cpp template genType::col_type glm::column(genType const & m, length_t index) ``` ### Parameters * `m`: The input matrix. * `index`: The index of the column to retrieve. ``` -------------------------------- ### Get External Attributes for a File in Zip Archive Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/man/zip_file_get_external_attributes.html Use this function to retrieve the operating system and external attributes for a specific file within a zip archive. The external attributes often contain file permissions. Set flags to ZIP_FL_UNCHANGED to get original values. ```c #include int zip_file_get_external_attributes(zip_t *archive, zip_uint64_t index, zip_flags_t flags, zip_uint8_t *opsys, zip_uint32_t *attributes); ``` -------------------------------- ### Generate Visual Studio Project on Windows Source: https://github.com/flyinghead/flycast/blob/master/README.md Run the bootstrap script to generate a Visual Studio project for building Flycast on Windows. Double-click to execute. ```batch shell\windows\generate_vs_project.bat ``` -------------------------------- ### zip_ftell Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/man/zip_ftell.html Get the current file position within a zip archive. ```APIDOC ## zip_ftell ### Description The `zip_ftell`() function reports the current offset in the file. ### Method `zip_ftell` ### Parameters #### Path Parameters - **file** (zip_file_t *) - Description: A pointer to the zip archive structure. ### Return Values - If successful, `zip_ftell` returns the current file position (zip_int64_t). - Otherwise, -1 is returned. ``` -------------------------------- ### bounceEaseIn Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00023_source.html Applies a bounce easing function that starts with a bouncing effect. ```APIDOC ## bounceEaseIn ### Description Applies a bounce easing function that starts with a bouncing effect. ### Signature ```cpp template genType bounceEaseIn(genType const& a); ``` ``` -------------------------------- ### bitfieldExtract Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00370.html Extracts a specified number of bits from a value starting at a given offset. ```APIDOC ## bitfieldExtract ### Description Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result. ### Signature ```cpp template GLM_FUNC_DECL vec bitfieldExtract(vec const &Value, int Offset, int Bits) ``` ### Parameters * `Value`: The source vector. * `Offset`: The starting bit position for extraction. * `Bits`: The number of bits to extract. ``` -------------------------------- ### Configure ImGui for UI Development Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Includes the ImGui library and its backends, disabling demo windows and debug tools for a leaner build. Math operators are enabled. ```cmake if(NOT LIBRETRO) target_compile_definitions(${PROJECT_NAME} PRIVATE IMGUI_DISABLE_DEMO_WINDOWS IMGUI_DISABLE_DEBUG_TOOLS IMGUI_DEFINE_MATH_OPERATORS) target_include_directories(${PROJECT_NAME} PRIVATE core/deps/imgui core/deps/imgui/backends) target_sources(${PROJECT_NAME} PRIVATE core/deps/imgui/imgui.cpp core/deps/imgui/imgui_demo.cpp core/deps/imgui/imgui_draw.cpp core/deps/imgui/imgui_cjk.cpp core/deps/imgui/imgui_stdlib.cpp core/deps/imgui/imgui_tables.cpp core/deps/imgui/imgui_widgets.cpp core/deps/imgui/misc/freetype/imgui_freetype.cpp) endif() ``` -------------------------------- ### bounceEaseInOut Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00023_source.html Applies a bounce easing function that has bouncing effects at both the start and end. ```APIDOC ## bounceEaseInOut ### Description Applies a bounce easing function that has bouncing effects at both the start and end. ### Signature ```cpp template genType bounceEaseInOut(genType const& a); ``` ``` -------------------------------- ### Example: Add file from buffer to zip archive Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/man/zip_file_add.html Demonstrates adding a file to a zip archive using data from a memory buffer. It checks for errors during source creation and file addition, printing an error message if they occur. The zip_source_t should not be freed if zip_file_add is successful. ```c zip_source_t *s; const char buf[]="teststring"; if ((s=zip_source_buffer(archive, buf, sizeof(buf), 0)) == NULL || zip_file_add(archive, name, s, ZIP_FL_ENC_UTF_8) < 0) { zip_source_free(s); printf("error adding file: %s\n", zip_strerror(archive)); } ``` -------------------------------- ### Auto-connect and Enable JIT Compilation (Swift) Source: https://github.com/flyinghead/flycast/blob/master/shell/apple/emulator-ios/AltKit/README.md Attempts to auto-connect to an AltServer and then enables unsigned code execution (JIT compilation). Stops discovering servers upon success and disconnects. ```swift ServerManager.shared.autoconnect { result in switch result { case .failure(let error): print("Could not auto-connect to server.", error) case .success(let connection): connection.enableUnsignedCodeExecution { result in switch result { case .failure(let error): print("Could not enable JIT compilation.", error) case .success: print("Successfully enabled JIT compilation!") ServerManager.shared.stopDiscovering() } connection.disconnect() } } } ``` -------------------------------- ### elasticEaseInOut Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00023_source.html Applies an elastic easing function that starts with damping, accelerates, and then decelerates. ```APIDOC ## elasticEaseInOut ### Description Applies an elastic easing function that starts with damping, accelerates, and then decelerates. ### Signature ```cpp template genType elasticEaseInOut(genType const & a); ``` ### Model Modelled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1)) ; [0,0.5) y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2) ; [0.5, 1]. ``` -------------------------------- ### Configure Libretro Core Source: https://github.com/flyinghead/flycast/blob/master/CMakeLists.txt Sets up the build for the libretro core, including common headers, source files, and platform-specific GLSL implementations. ```cmake if(LIBRETRO) target_include_directories(${PROJECT_NAME} PRIVATE core/deps/libretro-common/include) target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/memmap/memalign.c core/deps/libretro-common/file/file_path.c core/deps/libretro-common/file/file_path_io.c core/deps/libretro-common/vfs/vfs_implementation.c core/deps/libretro-common/encodings/encoding_utf.c core/deps/libretro-common/compat/compat_strl.c core/deps/libretro-common/compat/fopen_utf8.c core/deps/libretro-common/compat/compat_strcasestr.c core/deps/libretro-common/file/retro_dirent.c core/deps/libretro-common/streams/file_stream.c core/deps/libretro-common/time/rtime.c core/deps/libretro-common/string/stdstring.c) ``` ```cmake if(USE_OPENGL) target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsm/glsm.c core/deps/libretro-common/glsym/rglgen.c) if(ANDROID OR IOS OR USE_GLES) target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es3.c) elseif(USE_GLES2) target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es2.c) else() target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_gl.c) endif() endif() ``` ```cmake target_sources(${PROJECT_NAME} PRIVATE shell/libretro/audiostream.cpp shell/libretro/keyboard_map.h shell/libretro/libretro_core_option_defines.h shell/libretro/libretro_core_options_intl.h shell/libretro/libretro_core_options.h shell/libretro/libretro.cpp shell/libretro/LogManager.cpp shell/libretro/LogManager.h shell/libretro/option.cpp shell/libretro/oslib.cpp shell/libretro/storage.cpp shell/libretro/vmu_xhair.cpp) ``` ```cmake if(APPLE) target_sources(${PROJECT_NAME} PRIVATE shell/libretro/oslib_apple.mm) endif() if(WIN32) target_link_libraries(${PROJECT_NAME} PRIVATE mswsock) endif() endif() ``` -------------------------------- ### elasticEaseIn Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00023_source.html Applies an elastic easing function that starts with a damping effect and accelerates. ```APIDOC ## elasticEaseIn ### Description Applies an elastic easing function that starts with a damping effect and accelerates. ### Signature ```cpp template genType elasticEaseIn(genType const & a); ``` ### Model Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1)) ``` -------------------------------- ### XXH3 Collision Test Example (len=16) Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/tests/collisions/README.md Collision test result for XXH3 with an input length of 16. ```text | __XXH3__ | 16 | 100 Gi | 312.5 | 332 | | ``` -------------------------------- ### Build Shared Library Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Defines and configures a shared library 'libminiupnpc-shared' using the MINIUPNPC_SOURCES. Sets include directories, versioning, and export properties. Includes Windows-specific interface linking. ```cmake if (UPNPC_BUILD_SHARED) add_library (libminiupnpc-shared SHARED ${MINIUPNPC_SOURCES}) target_include_directories (libminiupnpc-shared PUBLIC $ $) add_library (miniupnpc::miniupnpc ALIAS libminiupnpc-shared) set_target_properties (libminiupnpc-shared PROPERTIES EXPORT_NAME miniupnpc) set_target_properties (libminiupnpc-shared PROPERTIES OUTPUT_NAME "miniupnpc") set_target_properties (libminiupnpc-shared PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties (libminiupnpc-shared PROPERTIES SOVERSION ${MINIUPNPC_API_VERSION}) target_link_libraries (libminiupnpc-shared PRIVATE miniupnpc-private) target_compile_definitions(libminiupnpc-shared PRIVATE MINIUPNP_EXPORTS) target_include_directories(libminiupnpc-shared INTERFACE $) if (WIN32) target_link_libraries(libminiupnpc-shared INTERFACE ws2_32 iphlpapi) endif() if (NOT UPNPC_NO_INSTALL) install (TARGETS libminiupnpc-shared EXPORT libminiupnpc-shared RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install (EXPORT libminiupnpc-shared DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/miniupnpc" NAMESPACE miniupnpc::) endif() ) ``` -------------------------------- ### XXH32: Simplified Initialization for Small Inputs Source: https://github.com/flyinghead/flycast/blob/master/core/deps/xxHash/doc/xxhash_spec.md When input is less than 16 bytes, XXH32 uses a simplified initialization with a single accumulator. ```c u32 acc = seed + PRIME32_5; ``` -------------------------------- ### Set Archive Prefix - C Source: https://github.com/flyinghead/flycast/blob/master/core/deps/libzip/TODO.md Functions to set and get an archive prefix, useful for self-extracting archives. ```c zip_set_archive_prefix(struct zip *za, const zip_uint8_t *data, zip_uint64_t length); const zip_uint8_t *zip_get_archive_prefix(struct zip *za, zip_uint64_t *lengthp); ``` -------------------------------- ### Transform Matrix Calculation with Extension Headers Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/manual.md This example shows how to generate a transformation matrix using GLM's extension headers for vectors, matrices, and transformations. This method also aims to minimize build times by including specific extension functionalities. ```cpp // Include GLM vector extensions: #include // vec2 #include // vec3 #include // radians // Include GLM matrix extensions: #include // mat4 #include // perspective, translate, rotate glm::mat4 transform(glm::vec2 const& Orientation, glm::vec3 const& Translate, glm::vec3 const& Up) { glm::mat4 Proj = glm::perspective(glm::radians(45.f), 1.33f, 0.1f, 10.f); glm::mat4 ViewTranslate = glm::translate(glm::mat4(1.f), Translate); glm::mat4 ViewRotateX = glm::rotate(ViewTranslate, Orientation.y, Up); glm::mat4 View = glm::rotate(ViewRotateX, Orientation.x, Up); glm::mat4 Model = glm::mat4(1.0f); return Proj * View * Model; } ``` -------------------------------- ### GLM CMake Project Setup Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/CMakeLists.txt Sets the minimum CMake version, policy, project name, version, and language. Enables testing and adds the main GLM library and tests as subdirectories. ```cmake cmake_minimum_required(VERSION 3.6 FATAL_ERROR) cmake_policy(VERSION 3.6) set(GLM_VERSION "0.9.9") project(glm VERSION ${GLM_VERSION} LANGUAGES CXX) enable_testing() add_subdirectory(glm) add_library(glm::glm ALIAS glm) if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) add_subdirectory(test) endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) ``` -------------------------------- ### sineEaseInOut Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00023.html Applies a sine easing function for both the start and end of the transition, modelled after a half sine wave. ```APIDOC ## sineEaseInOut ### Description Applies a sine easing function for both the start and end of the transition, modelled after a half sine wave. ### Function Signature template genType sineEaseInOut (genType const &a) ``` -------------------------------- ### quinticEaseInOut Source: https://github.com/flyinghead/flycast/blob/master/core/deps/glm/doc/api/a00023.html Applies a quintic easing function for both the start and end of the transition, modelled after piecewise quintic functions. ```APIDOC ## quinticEaseInOut ### Description Applies a quintic easing function for both the start and end of the transition, modelled after piecewise quintic functions: y = (1/2)*((2x)^5) ; [0, 0.5) and y = (1/2)*((2x-2)^5 + 2) ; [0.5, 1]. ### Function Signature template genType quinticEaseInOut (genType const &a) ``` -------------------------------- ### Build testminixml Executable Source: https://github.com/flyinghead/flycast/blob/master/core/deps/miniupnpc/CMakeLists.txt Configures the 'testminixml' executable, setting include directories and linking against the 'miniupnpc-tests' library. ```cmake add_executable (testminixml src/testminixml.c src/minixml.c src/igd_desc_parse.c) target_include_directories (testminixml PRIVATE $) target_link_libraries (testminixml PRIVATE miniupnpc-tests) ```