| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- # Definitions for all external bundled libraries
- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
- include(DownloadExternals)
- # pkgconfig -- it is used to find shared libraries without cmake modules on linux systems
- find_package(PkgConfig)
- if (NOT PkgConfig_FOUND)
- function(pkg_check_modules)
- # STUB
- endfunction()
- endif()
- # Catch
- add_library(catch-single-include INTERFACE)
- target_include_directories(catch-single-include INTERFACE catch/single_include)
- # libfmt
- pkg_check_modules(FMT IMPORTED_TARGET GLOBAL fmt>=6.1.0)
- if (FMT_FOUND)
- add_library(fmt::fmt ALIAS PkgConfig::FMT)
- else()
- message(STATUS "fmt 6.1.0 or newer not found, falling back to externals")
- add_subdirectory(fmt)
- add_library(fmt::fmt ALIAS fmt)
- endif()
- # Dynarmic
- if (ARCHITECTURE_x86_64)
- set(DYNARMIC_TESTS OFF)
- set(DYNARMIC_NO_BUNDLED_FMT ON)
- add_subdirectory(dynarmic)
- endif()
- # getopt
- if (MSVC)
- add_subdirectory(getopt)
- endif()
- # Glad
- add_subdirectory(glad)
- # inih
- add_subdirectory(inih)
- # lz4
- pkg_check_modules(LIBLZ4 IMPORTED_TARGET GLOBAL liblz4>=1.8.0)
- if (LIBLZ4_FOUND)
- add_library(lz4_static ALIAS PkgConfig::LIBLZ4)
- else()
- message(STATUS "liblz4 1.8.0 or newer not found, falling back to externals")
- set(LZ4_BUNDLED_MODE ON)
- add_subdirectory(lz4/contrib/cmake_unofficial EXCLUDE_FROM_ALL)
- target_include_directories(lz4_static INTERFACE ./lz4/lib)
- endif()
- # mbedtls
- add_subdirectory(mbedtls EXCLUDE_FROM_ALL)
- target_include_directories(mbedtls PUBLIC ./mbedtls/include)
- # MicroProfile
- add_library(microprofile INTERFACE)
- target_include_directories(microprofile INTERFACE ./microprofile)
- # Unicorn
- add_library(unicorn-headers INTERFACE)
- target_include_directories(unicorn-headers INTERFACE ./unicorn/include)
- # Zstandard
- pkg_check_modules(LIBZSTD IMPORTED_TARGET GLOBAL libzstd>=1.3.8)
- if (LIBZSTD_FOUND)
- add_library(libzstd_static ALIAS PkgConfig::LIBZSTD)
- else()
- message(STATUS "libzstd 1.3.8 or newer not found, falling back to externals")
- add_subdirectory(zstd/build/cmake EXCLUDE_FROM_ALL)
- target_include_directories(libzstd_static INTERFACE ./zstd/lib)
- endif()
- # SoundTouch
- add_subdirectory(soundtouch)
- # Opus
- pkg_check_modules(OPUS IMPORTED_TARGET GLOBAL opus>=1.3.1)
- if (OPUS_FOUND)
- add_library(opus ALIAS PkgConfig::OPUS)
- else()
- message(STATUS "opus 1.3.1 or newer not found, falling back to externals")
- add_subdirectory(opus)
- target_include_directories(opus INTERFACE ./opus/include)
- endif()
- # Cubeb
- if(ENABLE_CUBEB)
- set(BUILD_TESTS OFF CACHE BOOL "")
- add_subdirectory(cubeb EXCLUDE_FROM_ALL)
- endif()
- # DiscordRPC
- if (USE_DISCORD_PRESENCE)
- add_subdirectory(discord-rpc EXCLUDE_FROM_ALL)
- target_include_directories(discord-rpc INTERFACE ./discord-rpc/include)
- endif()
- # Sirit
- if (ENABLE_VULKAN)
- add_subdirectory(sirit)
- endif()
- # zlib
- find_package(ZLIB 1.2.11)
- if (NOT ZLIB_FOUND)
- message(STATUS "zlib 1.2.11 or newer not found, falling back to externals")
- add_subdirectory(zlib EXCLUDE_FROM_ALL)
- set(ZLIB_LIBRARIES z)
- endif()
- # libzip
- pkg_check_modules(LIBZIP IMPORTED_TARGET GLOBAL libzip>=1.5.3)
- if (LIBZIP_FOUND)
- add_library(zip ALIAS PkgConfig::LIBZIP)
- else()
- message(STATUS "libzip 1.5.3 or newer not found, falling back to externals")
- add_subdirectory(libzip EXCLUDE_FROM_ALL)
- endif()
- if (ENABLE_WEB_SERVICE)
- # LibreSSL
- find_package(OpenSSL COMPONENTS Crypto SSL)
- if (NOT OpenSSL_FOUND)
- message(STATUS "OpenSSL not found, falling back to externals")
- set(LIBRESSL_SKIP_INSTALL ON CACHE BOOL "")
- add_subdirectory(libressl EXCLUDE_FROM_ALL)
- target_include_directories(ssl INTERFACE ./libressl/include)
- target_compile_definitions(ssl PRIVATE -DHAVE_INET_NTOP)
- get_directory_property(OPENSSL_LIBRARIES
- DIRECTORY libressl
- DEFINITION OPENSSL_LIBS)
- endif()
- # lurlparser
- add_subdirectory(lurlparser EXCLUDE_FROM_ALL)
- # httplib
- add_library(httplib INTERFACE)
- target_include_directories(httplib INTERFACE ./httplib)
- target_compile_definitions(httplib INTERFACE -DCPPHTTPLIB_OPENSSL_SUPPORT)
- target_link_libraries(httplib INTERFACE ${OPENSSL_LIBRARIES})
- # JSON
- add_library(json-headers INTERFACE)
- target_include_directories(json-headers INTERFACE ./json)
- endif()
|