diff options
Diffstat (limited to 'indra/cmake')
44 files changed, 836 insertions, 865 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index afe20a6dd3..5cb0c23d6d 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -33,6 +33,16 @@ add_compile_definitions( ADDRESS_SIZE=${ADDRESS_SIZE}) # -- which we do. Without one or the other, we get a ton of Boost warnings. add_compile_definitions(BOOST_BIND_GLOBAL_PLACEHOLDERS) +if(CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) +add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_FORCE_NEON=1 GLM_ENABLE_EXPERIMENTAL=1) +elseif($ENV{MSYSTEM_CARCH} MATCHES aarch64) +add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_ENABLE_EXPERIMENTAL=1) +else() +# Force enable SSE2 instructions in GLM per the manual +# https://github.com/g-truc/glm/blob/master/manual.md#section2_10 +add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_FORCE_SSE2=1 GLM_ENABLE_EXPERIMENTAL=1) +endif() + # Configure crash reporting set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds") set(NON_RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in developer builds") @@ -45,12 +55,17 @@ if(NON_RELEASE_CRASH_REPORTING) add_compile_definitions( LL_SEND_CRASH_REPORTS=1) endif() +set(USE_LTO OFF CACHE BOOL "Enable Link Time Optimization") +if(USE_LTO) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) +endif() + # Don't bother with a MinSizeRel or Debug builds. set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING "Supported build types." FORCE) # Platform-specific compilation flags. -if (WINDOWS) +if (NOT CMAKE_CXX_COMPILER_ID MATCHES GNU AND WINDOWS) # Don't build DLLs. set(BUILD_SHARED_LIBS OFF) @@ -61,15 +76,16 @@ if (WINDOWS) # http://www.cmake.org/pipermail/cmake/2009-September/032143.html string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - # zlib has assembly-language object files incompatible with SAFESEH add_link_options(/LARGEADDRESSAWARE - /SAFESEH:NO /NODEFAULTLIB:LIBCMT /IGNORE:4099) - add_definitions( - -DNOMINMAX -# /DDOM_DYNAMIC # For shared library colladadom + add_compile_definitions( + WIN32_LEAN_AND_MEAN + NOMINMAX +# DOM_DYNAMIC # For shared library colladadom + _CRT_SECURE_NO_WARNINGS # Allow use of sprintf etc + _WINSOCK_DEPRECATED_NO_WARNINGS # Disable deprecated WinSock API warnings ) add_compile_options( /Zo @@ -82,6 +98,7 @@ if (WINDOWS) /Oy- /fp:fast /MP + /permissive- ) # Nicky: x64 implies SSE2 @@ -96,7 +113,7 @@ if (WINDOWS) #ND: When using something like buildcache (https://github.com/mbitsnbites/buildcache) # to make those wrappers work /Zi must be changed to /Z7, as /Zi due to it's nature is not compatible with caching - if( ${CMAKE_CXX_COMPILER_LAUNCHER} MATCHES ".*cache.*") + if(${CMAKE_CXX_COMPILER_LAUNCHER} MATCHES ".*cache.*") add_compile_options( /Z7 ) string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") @@ -104,15 +121,7 @@ if (WINDOWS) string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") endif() - - # workaround for github runner image breakage: - # https://github.com/actions/runner-images/issues/10004#issuecomment-2153445161 - # can be removed after the above issue is resolved and deployed across GHA - add_compile_definitions(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) - - # Allow use of sprintf etc - add_compile_definitions(_CRT_SECURE_NO_WARNINGS) -endif (WINDOWS) +endif (NOT CMAKE_CXX_COMPILER_ID MATCHES GNU AND WINDOWS) if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") set( CMAKE_BUILD_WITH_INSTALL_RPATH TRUE ) @@ -155,11 +164,16 @@ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -fno-math-errno -fno-strict-aliasing -fsigned-char - -msse2 - -mfpmath=sse -pthread ) + if (CMAKE_SYSTEM_NAME MATCHES x86_64) + add_compile_options( + -msse2 + -mfpmath=sse + ) + endif () + if (NOT BUILD_SHARED_LIBS) add_compile_options(-fvisibility=hidden) endif (NOT BUILD_SHARED_LIBS) @@ -181,6 +195,12 @@ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -Wno-dangling-pointer ) + if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + set(GCC_WARNINGS + ${GCC_WARNINGS} + -Wno-cpp + ) + endif () add_link_options( -Wl,--no-keep-memory -Wl,--build-id @@ -235,6 +255,10 @@ if (DARWIN) list(APPEND GCC_WARNINGS -Wno-unused-but-set-variable -Wno-unused-variable ) endif() + if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) + list(APPEND GCC_WARNINGS "-Wno-#warnings" ) + endif() + add_compile_options(${GCC_WARNINGS}) add_compile_options(-m${ADDRESS_SIZE}) endif () diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 72486f110d..58a00c74da 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -5,15 +5,20 @@ include_guard() add_library( ll::apr INTERFACE IMPORTED ) -if (NOT (USE_AUTOBUILD_3P OR USE_CONAN)) +if (WINDOWS) + target_include_directories(ll::apr SYSTEM INTERFACE ${prefix_result}/../include) + target_link_directories(ll::apr INTERFACE ${prefix_result}) + target_link_libraries(ll::apr INTERFACE libapr-1 libaprutil-1) +else () include(FindPkgConfig) pkg_check_modules(Apr REQUIRED apr-1 apr-util-1) target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS}) target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS}) target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES}) - return () endif () +return () + use_system_binary( apr apr-util ) use_prebuilt_binary(apr_suite) @@ -27,6 +32,7 @@ if (WINDOWS) ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apr-1.lib ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}aprutil-1.lib ) + target_compile_definitions( ll::apr INTERFACE APR_DECLARE_STATIC=1 APU_DECLARE_STATIC=1 API_DECLARE_STATIC=1) elseif (DARWIN) if (LLCOMMON_LINK_SHARED) set(APR_selector "0.dylib") @@ -37,16 +43,15 @@ elseif (DARWIN) endif (LLCOMMON_LINK_SHARED) target_link_libraries( ll::apr INTERFACE - libapr-1.${APR_selector} - libaprutil-1.${APRUTIL_selector} + ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.${APR_selector} + ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.${APR_selector} iconv ) -else (WINDOWS) +else() target_link_libraries( ll::apr INTERFACE - apr-1 - aprutil-1 - uuid + ${ARCH_PREBUILT_DIRS_RELEASE}/libapr-1.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libaprutil-1.a rt ) -endif (WINDOWS) +endif () target_include_directories( ll::apr SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/apr-1 ) diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake index 4388e1e259..c569fba4e8 100644 --- a/indra/cmake/Audio.cmake +++ b/indra/cmake/Audio.cmake @@ -1,25 +1,38 @@ # -*- cmake -*- +include(Linking) include(Prebuilt) include_guard() add_library( ll::vorbis INTERFACE IMPORTED ) -if (NOT (USE_AUTOBUILD_3P OR USE_CONAN)) - include(FindPkgConfig) - pkg_check_modules(Vorbis REQUIRED ogg vorbis vorbisenc vorbisfile) - target_include_directories(ll::vorbis SYSTEM INTERFACE ${Vorbis_INCLUDE_DIRS}) - target_link_directories(ll::vorbis INTERFACE ${Vorbis_LIBRARY_DIRS}) - target_link_libraries(ll::vorbis INTERFACE ${Vorbis_LIBRARIES}) - return () -endif () +include(FindPkgConfig) +pkg_check_modules(Vorbis REQUIRED ogg vorbis vorbisenc vorbisfile) +target_include_directories(ll::vorbis SYSTEM INTERFACE ${Vorbis_INCLUDE_DIRS}) +target_link_directories(ll::vorbis INTERFACE ${Vorbis_LIBRARY_DIRS}) +target_link_libraries(ll::vorbis INTERFACE ${Vorbis_LIBRARIES}) +return () use_system_binary(vorbis) use_prebuilt_binary(ogg_vorbis) target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) if (WINDOWS) - target_link_libraries(ll::vorbis INTERFACE ogg_static vorbis_static vorbisenc_static vorbisfile_static ) + target_link_libraries(ll::vorbis INTERFACE + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libogg.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libogg.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisenc.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbisenc.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisfile.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbisfile.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbis.lib + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libvorbis.lib + ) else (WINDOWS) - target_link_libraries(ll::vorbis INTERFACE vorbisfile vorbis ogg vorbisenc ) + target_link_libraries(ll::vorbis INTERFACE + ${ARCH_PREBUILT_DIRS_RELEASE}/libogg.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisenc.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbisfile.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libvorbis.a + ) endif (WINDOWS) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index a4f81917ea..8459214f59 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -4,36 +4,43 @@ include(Prebuilt) include_guard() add_library( ll::boost INTERFACE IMPORTED ) + +if (DARWIN) + target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.87/include) + target_link_directories( ll::boost INTERFACE /opt/local/libexec/boost/1.87/lib) + set(sfx -mt) +elseif (WINDOWS) + target_include_directories( ll::boost SYSTEM INTERFACE ${prefix_result}/../include) + target_link_directories( ll::boost INTERFACE ${prefix_result}) + if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) + set(sfx -vc143-mt-a64-1_88) + else () + set(sfx -vc143-mt-x64-1_88) + endif () +else () + find_package( Boost REQUIRED ) +endif () +target_link_libraries( ll::boost INTERFACE + boost_context${sfx} + boost_fiber${sfx} + boost_filesystem${sfx} + boost_program_options${sfx} + boost_system${sfx} + boost_thread${sfx} + boost_url${sfx} + ) +if (WINDOWS) + target_link_libraries( ll::boost INTERFACE boost_json${sfx}) +else () + target_link_libraries( ll::boost INTERFACE boost_regex${sfx}) +endif () +target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS ) +return() + if( USE_CONAN ) target_link_libraries( ll::boost INTERFACE CONAN_PKG::boost ) target_compile_definitions( ll::boost INTERFACE BOOST_ALLOW_DEPRECATED_HEADERS BOOST_BIND_GLOBAL_PLACEHOLDERS ) return() -elseif( NOT USE_AUTOBUILD_3P ) - if (DARWIN) - target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.81/include) - target_link_libraries( ll::boost INTERFACE - /opt/local/libexec/boost/1.81/lib/libboost_context-mt.a - /opt/local/libexec/boost/1.81/lib/libboost_fiber-mt.a - /opt/local/libexec/boost/1.81/lib/libboost_filesystem-mt.a - /opt/local/libexec/boost/1.81/lib/libboost_program_options-mt.a - /opt/local/libexec/boost/1.81/lib/libboost_regex-mt.a - /opt/local/libexec/boost/1.81/lib/libboost_system-mt.a - /opt/local/libexec/boost/1.81/lib/libboost_thread-mt.a - ) - else (DARWIN) - find_package( Boost REQUIRED ) - target_link_libraries( ll::boost INTERFACE - boost_context - boost_fiber - boost_filesystem - boost_program_options - boost_regex - boost_system - boost_thread - ) - endif (DARWIN) - target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS ) - return() endif() use_prebuilt_binary(boost) @@ -50,7 +57,8 @@ if (WINDOWS) libboost_program_options-mt${addrsfx} libboost_regex-mt${addrsfx} libboost_system-mt${addrsfx} - libboost_thread-mt${addrsfx}) + libboost_thread-mt${addrsfx} + libboost_url-mt${addrsfx}) elseif (LINUX) target_link_libraries( ll::boost INTERFACE boost_fiber-mt${addrsfx} @@ -58,9 +66,9 @@ elseif (LINUX) boost_filesystem-mt${addrsfx} boost_program_options-mt${addrsfx} boost_regex-mt${addrsfx} - boost_thread-mt${addrsfx} boost_system-mt${addrsfx} - ) + boost_thread-mt${addrsfx} + boost_url-mt${addrsfx}) elseif (DARWIN) target_link_libraries( ll::boost INTERFACE boost_context-mt${addrsfx} @@ -69,7 +77,8 @@ elseif (DARWIN) boost_program_options-mt${addrsfx} boost_regex-mt${addrsfx} boost_system-mt${addrsfx} - boost_thread-mt${addrsfx}) + boost_thread-mt${addrsfx} + boost_url-mt${addrsfx}) endif (WINDOWS) if (LINUX) diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index 119a41f570..b70be7926f 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -35,16 +35,64 @@ elseif (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) ) file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0") endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0) +elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/v1.14.0-r3.tar.gz) + file(DOWNLOAD + https://github.com/secondlife/dullahan/archive/refs/tags/v1.14.0-r3.tar.gz + ${CMAKE_BINARY_DIR}/v1.14.0-r3.tar.gz + ) + endif () + file(ARCHIVE_EXTRACT + INPUT ${CMAKE_BINARY_DIR}/v1.14.0-r3.tar.gz + DESTINATION ${CMAKE_BINARY_DIR} + ) + execute_process( + COMMAND sed -i "/#include <vector>/a #include <cstdint>" dullahan.h + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3/src + ) + file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/cef) + try_compile(DULLAHAN_RESULT + PROJECT dullahan + SOURCE_DIR ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3 + BINARY_DIR ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3 + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} + -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} + -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON + -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} + -DUSE_SPOTIFY_CEF:BOOL=ON + -DSPOTIFY_CEF_URL:STRING=https://cef-builds.spotifycdn.com/cef_binary_118.4.1%2Bg3dd6078%2Bchromium-118.0.5993.54_linuxarm64_beta_minimal.tar.bz2 + -DPROJECT_ARCH:STRING=${CMAKE_SYSTEM_PROCESSOR} + -DENABLE_CXX11_ABI:BOOL=ON + ) + if (${DULLAHAN_RESULT}) + execute_process( + COMMAND ${CMAKE_MAKE_PROGRAM} install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3 + OUTPUT_VARIABLE dullahan_installed + ) + file( + COPY + ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3/src/dullahan.h + ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3/src/dullahan_version.h + DESTINATION ${LIBS_PREBUILT_DIR}/include/cef + ) + file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "${dullahan_installed}") + endif (${DULLAHAN_RESULT}) + endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0) else (CMAKE_OSX_ARCHITECTURES MATCHES arm64) use_prebuilt_binary(dullahan) - if (${LINUX_DISTRO} MATCHES fedora) - execute_process( - COMMAND patchelf --remove-rpath bin/release/dullahan_host - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} - ) - endif (${LINUX_DISTRO} MATCHES fedora) endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64) +execute_process( + COMMAND patchelf --remove-rpath bin/release/dullahan_host + WORKING_DIRECTORY ${LIBS_PREBUILT_DIR} + ) + target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/cef) if (WINDOWS) @@ -73,8 +121,8 @@ elseif (DARWIN) elseif (LINUX) target_link_libraries( ll::cef INTERFACE - libdullahan.a - cef - cef_dll_wrapper.a + libdullahan.a + cef + cef_dll_wrapper.a ) endif (WINDOWS) diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index fa6cd8556b..5525ac9f24 100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -26,6 +26,7 @@ set(cmake_SOURCE_FILES FreeType.cmake GLEXT.cmake GLH.cmake + GLM.cmake Havok.cmake Hunspell.cmake LLAddBuildTest.cmake @@ -57,13 +58,11 @@ set(cmake_SOURCE_FILES Tut.cmake UI.cmake UnixInstall.cmake - URIPARSER.cmake Variables.cmake ViewerMiscLibs.cmake VisualLeakDetector.cmake LibVLCPlugin.cmake WebRTC.cmake - XmlRpcEpi.cmake xxHash.cmake ZLIBNG.cmake ) diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake index 08938ff3d8..211c3ae9a0 100644 --- a/indra/cmake/CURL.cmake +++ b/indra/cmake/CURL.cmake @@ -1,18 +1,18 @@ # -*- cmake -*- include(Prebuilt) +include(Linking) include_guard() add_library( ll::libcurl INTERFACE IMPORTED ) -if (NOT USESYSTEMLIBS) +if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) use_system_binary(libcurl) -endif (NOT USESYSTEMLIBS) -if (DARWIN OR LINUX OR NOT USESYSTEMLIBS) +elseif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR WINDOWS) use_prebuilt_binary(curl) if (DARWIN) execute_process( COMMAND lipo -archs libcurl.a - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} OUTPUT_VARIABLE curl_archs OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -22,75 +22,83 @@ use_prebuilt_binary(curl) libcurl.a -thin ${CMAKE_OSX_ARCHITECTURES} -output libcurl.a - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} ) - endif (NOT ${curl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES}) - endif (DARWIN) + endif () + endif () elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/curl_installed OR NOT ${curl_installed} EQUAL 0) if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz) file(DOWNLOAD https://github.com/secondlife/3p-curl/archive/refs/tags/v7.54.1-r1.tar.gz ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz) + endif () file(ARCHIVE_EXTRACT INPUT ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) + if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64 AND (${LINUX_DISTRO} MATCHES fedora)) + execute_process( + COMMAND sed -i netrc.c -e "s/defined(HAVE_GETPWUID_R)/0/g" netrc.c + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/lib + ) + endif () file( COPY - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curl.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlbuild.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlrules.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlver.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/easy.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/mprintf.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/multi.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/stdcheaders.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/system.h - ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/typecheck-gcc.h - DESTINATION ${LIBS_PREBUILT_DIR}/include/curl - ) - file( - COPY - ${LIBS_PREBUILT_DIR}/lib/release/libcrypto.a - ${LIBS_PREBUILT_DIR}/lib/release/libssl.a - DESTINATION ${LIBS_PREBUILT_DIR}/lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.a + DESTINATION ${ARCH_PREBUILT_DIRS} ) - message("We need to temporarily have OpenSSL3 header directory and libraries renamed just until the libcurl building process with OpenSSL1.1 now is finished.") - execute_process(COMMAND sudo mv /usr/include/openssl /usr/include/openssl3) - execute_process(COMMAND sudo mv /usr/lib/libcrypto.a /usr/lib/libcrypto.a.3) - execute_process(COMMAND sudo mv /usr/lib/libcrypto.so /usr/lib/libcrypto.so.3) - execute_process(COMMAND sudo mv /usr/lib/libssl.a /usr/lib/libssl.a.3) - execute_process(COMMAND sudo mv /usr/lib/libssl.so /usr/lib/libssl.so.3) + if (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + message("We need to temporarily have OpenSSL3 header directory and libraries renamed just until the libcurl building process with OpenSSL1.1 now is finished.") + execute_process(COMMAND sudo mv /usr/include/openssl /usr/include/openssl3) + execute_process(COMMAND sudo mv /usr/lib/libcrypto.a /usr/lib/libcrypto.a.3) + execute_process(COMMAND sudo mv /usr/lib/libcrypto.so /usr/lib/libcrypto.so.3) + execute_process(COMMAND sudo mv /usr/lib/libssl.a /usr/lib/libssl.a.3) + execute_process(COMMAND sudo mv /usr/lib/libssl.so /usr/lib/libssl.so.3) + endif () + set(ENV{CFLAGS} "-std=c90") execute_process( - COMMAND ./configure --disable-alt-svc --disable-dict --disable-doh --disable-file --disable-gopher --disable-headers-api --disable-hsts --disable-imap --disable-ldap --disable-ldaps --disable-libcurl-option --disable-manual --disable-mqtt --disable-ntlm --disable-ntlm-wb --disable-pop3 --disable-rtsp --disable-shared --disable-smb --disable-smtp --disable-sspi --disable-telnet --disable-tftp --disable-tls-srp --disable-unix-sockets --disable-verbose --disable-versioned-symbols --enable-threaded-resolver --with-ssl=${LIBS_PREBUILT_DIR} --without-libidn2 --without-libpsl --without-libssh2 + COMMAND ./configure --disable-alt-svc --disable-dict --disable-doh --disable-file --disable-gopher --disable-headers-api --disable-hsts --disable-imap --disable-ldap --disable-ldaps --disable-libcurl-option --disable-manual --disable-mqtt --disable-ntlm --disable-ntlm-wb --disable-pop3 --disable-rtsp --disable-shared --disable-smb --disable-smtp --disable-sspi --disable-telnet --disable-tftp --disable-tls-srp --disable-unix-sockets --disable-verbose --disable-versioned-symbols --enable-threaded-resolver --with-ssl=${LIBS_PREBUILT_DIR} --without-libidn2 --without-libpsl --without-libssh2 --prefix=${LIBS_PREBUILT_DIR} --libdir=${ARCH_PREBUILT_DIRS_RELEASE} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl ) execute_process( COMMAND make -j${MAKE_JOBS} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl - RESULT_VARIABLE curl_installed ) - file( - COPY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/lib/.libs/libcurl.a - DESTINATION ${LIBS_PREBUILT_DIR}/lib/release + unset(ENV{CFLAGS}) + execute_process( + COMMAND make install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl + RESULT_VARIABLE curl_installed ) - execute_process(COMMAND sudo mv /usr/include/openssl3 /usr/include/openssl) - execute_process(COMMAND sudo mv /usr/lib/libcrypto.a.3 /usr/lib/libcrypto.a) - execute_process(COMMAND sudo mv /usr/lib/libcrypto.so.3 /usr/lib/libcrypto.so) - execute_process(COMMAND sudo mv /usr/lib/libssl.a.3 /usr/lib/libssl.a) - execute_process(COMMAND sudo mv /usr/lib/libssl.so.3 /usr/lib/libssl.so) - message("OpenSSL3 header directory and library names have been restored.") + if (CMAKE_SYSTEM_NAME MATCHES FreeBSD) + execute_process(COMMAND sudo mv /usr/include/openssl3 /usr/include/openssl) + execute_process(COMMAND sudo mv /usr/lib/libcrypto.a.3 /usr/lib/libcrypto.a) + execute_process(COMMAND sudo mv /usr/lib/libcrypto.so.3 /usr/lib/libcrypto.so) + execute_process(COMMAND sudo mv /usr/lib/libssl.a.3 /usr/lib/libssl.a) + execute_process(COMMAND sudo mv /usr/lib/libssl.so.3 /usr/lib/libssl.so) + message("OpenSSL3 header directory and library names have been restored.") + endif () file(REMOVE - ${LIBS_PREBUILT_DIR}/lib/libcrypto.a - ${LIBS_PREBUILT_DIR}/lib/libssl.a + ${ARCH_PREBUILT_DIRS}/libcrypto.a + ${ARCH_PREBUILT_DIRS}/libssl.a ) file(WRITE ${PREBUILD_TRACKING_DIR}/curl_installed "${curl_installed}") -endif (DARWIN OR LINUX OR NOT USESYSTEMLIBS) +endif () if (WINDOWS) - target_link_libraries(ll::libcurl INTERFACE libcurl.lib) -else (WINDOWS) - target_link_libraries(ll::libcurl INTERFACE libcurl.a) -endif (WINDOWS) + target_link_libraries(ll::libcurl INTERFACE + ${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.lib + ll::openssl + ll::nghttp2 + ll::zlib-ng + ) +else () + target_link_libraries(ll::libcurl INTERFACE + ${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.a + ll::openssl + ll::nghttp2 + ll::zlib-ng + ) +endif () target_include_directories( ll::libcurl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index d78f2b90b8..6ac00fd131 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -54,21 +54,12 @@ if(WINDOWS) set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(release_files openjp2.dll - libapr-1.dll - libaprutil-1.dll - nghttp2.dll - libhunspell.dll - uriparser.dll ) - # OpenSSL - if(ADDRESS_SIZE EQUAL 64) - set(release_files ${release_files} libcrypto-1_1-x64.dll) - set(release_files ${release_files} libssl-1_1-x64.dll) - else(ADDRESS_SIZE EQUAL 64) - set(release_files ${release_files} libcrypto-1_1.dll) - set(release_files ${release_files} libssl-1_1.dll) - endif(ADDRESS_SIZE EQUAL 64) + if(LLCOMMON_LINK_SHARED) + set(release_files ${release_files} libapr-1.dll) + set(release_files ${release_files} libaprutil-1.dll) + endif() # Filenames are different for 32/64 bit BugSplat file and we don't # have any control over them so need to branch. @@ -137,9 +128,14 @@ if(WINDOWS) # Check each of them. foreach(release_msvc_file msvcp${MSVC_VER}.dll + msvcp${MSVC_VER}_1.dll + msvcp${MSVC_VER}_2.dll + msvcp${MSVC_VER}_atomic_wait.dll + msvcp${MSVC_VER}_codecvt_ids.dll msvcr${MSVC_VER}.dll vcruntime${MSVC_VER}.dll vcruntime${MSVC_VER}_1.dll + vcruntime${MSVC_VER}_threads.dll ) if(redist_path AND EXISTS "${redist_path}/${release_msvc_file}") MESSAGE(STATUS "Copying redist file from ${redist_path}/${release_msvc_file}") @@ -159,10 +155,6 @@ if(WINDOWS) MESSAGE(STATUS "Redist lib ${release_msvc_file} not found") endif() endforeach() - MESSAGE(STATUS "Will copy redist files for MSVC ${MSVC_VER}:") - foreach(target ${third_party_targets}) - MESSAGE(STATUS "${target}") - endforeach() elseif(DARWIN) set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") @@ -176,20 +168,18 @@ elseif(DARWIN) ) set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(release_files - libapr-1.0.dylib - libapr-1.dylib - libaprutil-1.0.dylib - libaprutil-1.dylib - ${EXPAT_COPY} - libhunspell-1.3.0.dylib libndofdev.dylib - libnghttp2.dylib - libnghttp2.14.dylib - liburiparser.dylib - liburiparser.1.dylib - liburiparser.1.0.27.dylib ) + if(LLCOMMON_LINK_SHARED) + set(release_files ${release_files} + libapr-1.0.dylib + libapr-1.dylib + libaprutil-1.0.dylib + libaprutil-1.dylib + ) + endif() + if (TARGET ll::openal) list(APPEND release_files libalut.dylib libopenal.dylib) endif () @@ -220,15 +210,28 @@ elseif(LINUX) set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") # *FIX - figure out what to do with duplicate libalut.so here -brad set(release_files - ${EXPAT_COPY} - ) + ) if( USE_AUTOBUILD_3P ) list( APPEND release_files - libapr-1.so.0 - libaprutil-1.so.0 - libhunspell-1.3.so.0.0.0 + libatk-1.0.so + libfreetype.so.6.6.2 + libfreetype.so.6 + libopenjp2.so + libuuid.so.16 + libuuid.so.16.0.22 + libfontconfig.so.1.8.0 + libfontconfig.so.1 + libgmodule-2.0.so + libgobject-2.0.so ) + + if(LLCOMMON_LINK_SHARED) + set(release_files ${release_files} + libapr-1.so.0 + libaprutil-1.so.0 + ) + endif() endif() else(WINDOWS) diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake index 327fe8aa72..1a0b8789dc 100644 --- a/indra/cmake/EXPAT.cmake +++ b/indra/cmake/EXPAT.cmake @@ -7,14 +7,13 @@ add_library( ll::expat INTERFACE IMPORTED ) use_system_binary(expat) use_prebuilt_binary(expat) if (WINDOWS) - target_link_libraries( ll::expat INTERFACE libexpatMT ) - set(EXPAT_COPY libexpatMT.dll) -else (WINDOWS) - target_link_libraries( ll::expat INTERFACE expat ) - if (DARWIN) - set(EXPAT_COPY libexpat.1.dylib libexpat.dylib) - else () - set(EXPAT_COPY libexpat.so.1 libexpat.so) - endif () -endif (WINDOWS) + target_compile_definitions( ll::expat INTERFACE XML_STATIC=1) + target_link_libraries( ll::expat INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libexpatd.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.lib) +else () + target_link_libraries( ll::expat INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libexpat.a + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libexpat.a) +endif () target_include_directories( ll::expat SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake index 313ee2cde7..8cac756ead 100644 --- a/indra/cmake/FMODSTUDIO.cmake +++ b/indra/cmake/FMODSTUDIO.cmake @@ -30,11 +30,11 @@ if (USE_FMODSTUDIO) # Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL) # as accessing the private LL location will fail if you don't have the credential include(Prebuilt) - if (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0)) - file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release) + if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0) + file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) if (DARWIN) execute_process( - COMMAND hdiutil attach -noverify fmodstudioapi20223mac-installer.dmg + COMMAND hdiutil attach -noverify fmodstudioapi20229mac-installer.dmg WORKING_DIRECTORY $ENV{HOME}/Downloads ) file( @@ -53,7 +53,7 @@ if (USE_FMODSTUDIO) COMMAND lipo lib/libfmod.dylib -thin ${CMAKE_OSX_ARCHITECTURES} - -output ${LIBS_PREBUILT_DIR}/lib/release/libfmod.dylib + -output ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.dylib WORKING_DIRECTORY /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core ) execute_process( @@ -62,36 +62,47 @@ if (USE_FMODSTUDIO) RESULT_VARIABLE fmodstudio_installed ) file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "${fmodstudio_installed}") - else (DARWIN) + else () file(ARCHIVE_EXTRACT - INPUT $ENV{HOME}/Downloads/fmodstudioapi20223linux.tar.gz + INPUT $ENV{HOME}/Downloads/fmodstudioapi20229linux.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) file( COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod.hpp - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_codec.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_common.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_dsp.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_dsp_effects.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_errors.h - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_output.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod.hpp + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod_codec.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod_common.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod_dsp.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod_dsp_effects.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod_errors.h + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/inc/fmod_output.h DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio ) - file( - COPY - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 - ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.23 - DESTINATION ${LIBS_PREBUILT_DIR}/lib/release - FOLLOW_SYMLINK_CHAIN - ) + if (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + file( + COPY + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/lib/arm64/libfmod.so + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/lib/arm64/libfmod.so.13 + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/lib/arm64/libfmod.so.13.29 + DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} + FOLLOW_SYMLINK_CHAIN + ) + else () + file( + COPY + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13 + ${CMAKE_BINARY_DIR}/fmodstudioapi20229linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.29 + DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} + FOLLOW_SYMLINK_CHAIN + ) + endif () file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "0") - endif (DARWIN) - else (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0)) - use_prebuilt_binary(fmodstudio) - endif (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0)) + endif () + endif () + + #use_prebuilt_binary(fmodstudio) if (WINDOWS) target_link_libraries( ll::fmodstudio INTERFACE fmod_vc) elseif (DARWIN) diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index 82ba8fc06e..d5c7891032 100644 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake @@ -1,23 +1,24 @@ # -*- cmake -*- include(Prebuilt) +include(Linking) include_guard() add_library( ll::freetype INTERFACE IMPORTED ) -if (USESYSTEMLIBS) - include(FindPkgConfig) - pkg_check_modules(Freetype REQUIRED freetype2) - target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} ) - target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} ) - target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} ) - return () -endif () +include(FindPkgConfig) +pkg_check_modules(Freetype REQUIRED freetype2) +target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} ) +target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} ) +target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} ) +return () - use_system_binary(freetype) - use_prebuilt_binary(freetype) - target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/) -if( LINUX ) - target_link_libraries( ll::freetype INTERFACE ${LIBS_PREBUILT_DIR}/lib/release/libfreetype.a ${LIBS_PREBUILT_DIR}/lib/release/libpng16.a) +use_system_binary(freetype) +use_prebuilt_binary(freetype) +target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/) + +if (WINDOWS) + target_link_libraries( ll::freetype INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/freetype.lib) else() - target_link_libraries( ll::freetype INTERFACE freetype ) + target_link_libraries( ll::freetype INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libfreetype.a) endif() + diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake index ea349237d3..f45b27e7b8 100644 --- a/indra/cmake/GLEXT.cmake +++ b/indra/cmake/GLEXT.cmake @@ -3,10 +3,9 @@ include(Prebuilt) include(GLH) add_library( ll::glext INTERFACE IMPORTED ) - -if (USESYSTEMLIBS) - return () +#use_system_binary(glext) +if (WINDOWS) +use_prebuilt_binary(glext) endif () -use_system_binary(glext) -use_prebuilt_binary(glext) + diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake index 648a08454b..ac86f385c6 100644 --- a/indra/cmake/GLH.cmake +++ b/indra/cmake/GLH.cmake @@ -4,7 +4,5 @@ include(Prebuilt) add_library( ll::glh_linear INTERFACE IMPORTED ) target_include_directories( ll::glh_linear SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) -if (NOT USESYSTEMLIBS) -use_system_binary( glh_linear ) -endif (NOT USESYSTEMLIBS) +#use_system_binary( glh_linear ) use_prebuilt_binary(glh_linear) diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake index 451b7292cb..db6acc065e 100644 --- a/indra/cmake/GLM.cmake +++ b/indra/cmake/GLM.cmake @@ -3,12 +3,9 @@ include(Prebuilt) add_library( ll::glm INTERFACE IMPORTED ) -if (NOT USESYSTEMLIBS) -use_system_binary( glm ) -elseif (NOT LINUX) - find_package( glm REQUIRED ) -endif (NOT USESYSTEMLIBS) - -if (LINUX OR USESYSTEMLIBS) +#use_system_binary( glm ) +if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) use_prebuilt_binary(glm) -endif (LINUX OR USESYSTEMLIBS) +elseif (NOT WINDOWS) + find_package( glm REQUIRED ) +endif () diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake index 96c75ad262..129679febd 100644 --- a/indra/cmake/Hunspell.cmake +++ b/indra/cmake/Hunspell.cmake @@ -1,19 +1,24 @@ # -*- cmake -*- +include(Linking) include(Prebuilt) include_guard() -if (USE_AUTOBUILD_3P OR USE_CONAN) use_prebuilt_binary(dictionaries) -endif () add_library( ll::hunspell INTERFACE IMPORTED ) use_system_binary(hunspell) use_prebuilt_binary(libhunspell) if (WINDOWS) - target_link_libraries( ll::hunspell INTERFACE libhunspell) + target_compile_definitions( ll::hunspell INTERFACE HUNSPELL_STATIC=1) + target_link_libraries( ll::hunspell INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/libhunspell.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell.lib + ) elseif(DARWIN) - target_link_libraries( ll::hunspell INTERFACE hunspell-1.3) + target_link_libraries( ll::hunspell INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a + ) elseif(LINUX) - target_link_libraries( ll::hunspell INTERFACE hunspell-1.3) + target_link_libraries( ll::hunspell INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a + ) endif() target_include_directories( ll::hunspell SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/hunspell) diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake index 252d7852d4..ade5a070cc 100644 --- a/indra/cmake/JPEG.cmake +++ b/indra/cmake/JPEG.cmake @@ -7,12 +7,14 @@ include_guard() add_library( ll::libjpeg INTERFACE IMPORTED ) use_system_binary(libjpeg) -use_prebuilt_binary(jpeglib) +use_prebuilt_binary(libjpeg-turbo) if (LINUX) - target_link_libraries( ll::libjpeg INTERFACE jpeg) + target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a) elseif (DARWIN) - target_link_libraries( ll::libjpeg INTERFACE jpeg) + target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a) elseif (WINDOWS) - target_link_libraries( ll::libjpeg INTERFACE jpeglib) + target_link_libraries( ll::libjpeg INTERFACE + debug ${ARCH_PREBUILT_DIRS_DEBUG}/jpeg.lib + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/jpeg.lib) endif (LINUX) target_include_directories( ll::libjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index 9e3707ff17..91e376352f 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -1,10 +1,8 @@ # -*- cmake -*- +include(EXPAT) include(APR) include(Boost) -include(EXPAT) include(Tracy) include(xxHash) include(ZLIBNG) - -include(XmlRpcEpi) diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake index 1cb1679d75..80d243d9f8 100644 --- a/indra/cmake/LLPhysicsExtensions.cmake +++ b/indra/cmake/LLPhysicsExtensions.cmake @@ -26,9 +26,6 @@ if (HAVOK) elseif (HAVOK_TPV) use_prebuilt_binary(llphysicsextensions_tpv) target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions_tpv) -elseif (NOT (USE_AUTOBUILD_3P OR USE_CONAN)) - target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensionsstub) - return () else (HAVOK) use_prebuilt_binary(llphysicsextensions_stub) set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 1e77ec3346..e6adea477f 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -2,11 +2,11 @@ # these should be moved to their own cmake file include(Prebuilt) +include(Linking) include(Boost) include_guard() -add_library( ll::pcre INTERFACE IMPORTED ) add_library( ll::minizip-ng INTERFACE IMPORTED ) add_library( ll::libxml INTERFACE IMPORTED ) add_library( ll::colladadom INTERFACE IMPORTED ) @@ -18,141 +18,136 @@ if( USE_CONAN ) "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" ) endif() -if( USESYSTEMLIBS ) - if( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) - # Build of the collada-dom for Linux and FreeBSD is done in - # indra/llprimitive/CMakeLists.txt - return () - endif( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) - if ( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 ) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz) +if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) + # Build of the collada-dom for Linux and FreeBSD is done in + # indra/llprimitive/CMakeLists.txt + return() +else () + include(FindPkgConfig) + pkg_check_modules(Minizip REQUIRED minizip) + pkg_check_modules(Libxml2 REQUIRED libxml-2.0) + target_link_libraries( ll::minizip-ng INTERFACE ${Minizip_LIBRARIES} ) + target_link_libraries( ll::libxml INTERFACE ${Libxml2_LIBRARIES} ) + if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz) file(DOWNLOAD - https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r4.tar.gz - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz + https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r8.tar.gz + ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz) + endif () file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz + INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) - file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4) - include(FindPkgConfig) - pkg_check_modules(Minizip REQUIRED minizip) - pkg_check_modules(Libxml2 REQUIRED libxml-2.0) - pkg_check_modules(Libpcrecpp libpcrecpp) - if( DARWIN ) - try_compile(COLLADADOM_RESULT - PROJECT colladadom - SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4 - BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4 - TARGET collada14dom - CMAKE_FLAGS - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Libxml2_LIBRARY_DIRS} - -Dlibpcrecpp_LIBRARIES:STRING=pcrecpp - -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES} - -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem-mt - -DBoost_SYSTEM_LIBRARY:STRING=boost_system-mt - -Dlibpcrecpp_CFLAGS_OTHERS:STRING=-I${Libpcrecpp_INCLUDE_DIRS}/libxml2 - -DEXTRA_COMPILE_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS} - -DBoost_CFLAGS:STRING=-I${Libpcrecpp_INCLUDE_DIRS} - -DOPT_COLLADA14:BOOL=ON - -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada - -DCOLLADA_DOM_SOVERSION:STRING=0 - -DCOLLADA_DOM_VERSION:STRING=2.3-r4 - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.15 - OUTPUT_VARIABLE colladadom_installed + if (WINDOWS) + execute_process( + COMMAND sed -i "s/SHARED/STATIC/" 1.4/CMakeLists.txt + COMMAND sed -i "/#include <cstdarg>/a #define WIN32" dae/daeUtils.cpp + COMMAND sed -i "/using namespace cdom;/a namespace boost{void boost::throw_exception(class std::exception const &){}}" dae/daeURI.cpp + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src ) - if (${COLLADADOM_RESULT}) - file( - COPY - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.2.3-r4.dylib - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.0.dylib - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.dylib - DESTINATION ${LIBS_PREBUILT_DIR}/lib/release - FOLLOW_SYMLINK_CHAIN - ) - endif (${COLLADADOM_RESULT}) - else( DARWIN ) + else () execute_process( - COMMAND sed -i "" -e "s/SHARED/STATIC/g" 1.4/CMakeLists.txt - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src + COMMAND sed -i "" -e "s/SHARED/STATIC/" src/1.4/CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8 ) - try_compile(COLLADADOM_RESULT - PROJECT colladadom - SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4 - BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4 - TARGET collada14dom - CMAKE_FLAGS - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Libxml2_LIBRARY_DIRS} - -Dlibpcrecpp_LIBRARIES:STRING=pcrecpp - -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES} - -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem - -DBoost_SYSTEM_LIBRARY:STRING=boost_system - -Dlibpcrecpp_CFLAGS_OTHERS:STRING=-I${Libxml2_INCLUDE_DIRS} - -DEXTRA_COMPILE_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS} - -DBoost_CFLAGS:STRING=-I${Libpcrecpp_INCLUDE_DIRS} - -DOPT_COLLADA14:BOOL=ON - -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada - -DCOLLADA_DOM_SOVERSION:STRING=0 - -DCOLLADA_DOM_VERSION:STRING=2.3-r4 + endif () + if (DARWIN) + set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.87/include) + set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.87/lib) + set(BOOST_LIBRARY_SUFFIX -mt) + elseif (WINDOWS) + set(BOOST_CFLAGS -I${prefix_result}/../include) + set(BOOST_LIBS -L${prefix_result}) + if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) + set(BOOST_LIBRARY_SUFFIX -vc143-mt-a64-1_88) + else () + set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_88) + endif () + endif () + file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4) + try_compile(COLLADADOM_RESULT + PROJECT colladadom + SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8 + BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8 + TARGET collada14dom + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} + -DCMAKE_CXX_STANDARD:STRING=17 + -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS} + -DBoost_CFLAGS:STRING=${BOOST_CFLAGS} + -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS} + "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} ${BOOST_LIBS}" + -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem${BOOST_LIBRARY_SUFFIX} + -DBoost_SYSTEM_LIBRARY:STRING=boost_system${BOOST_LIBRARY_SUFFIX} + -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES} + -DOPT_COLLADA14:BOOL=ON + -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:PATH=${LIBS_PREBUILT_DIR}/include/collada + ) + if (WINDOWS) + execute_process( + COMMAND MSBuild.exe ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/Project.sln -p:Configuration=${CMAKE_BUILD_TYPE} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8 OUTPUT_VARIABLE colladadom_installed ) - if (${COLLADADOM_RESULT}) - file( - COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.a - DESTINATION ${LIBS_PREBUILT_DIR}/lib/release - ) - endif (${COLLADADOM_RESULT}) - endif( DARWIN ) - if (${COLLADADOM_RESULT}) - file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada/1.4) + file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada) file( - COPY - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/1.4 - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/1.5 - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dae - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dae.h - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dom.h - ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/modules - DESTINATION ${LIBS_PREBUILT_DIR}/include/collada + COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/include + DESTINATION ${LIBS_PREBUILT_DIR}/include + ) + file(RENAME + ${LIBS_PREBUILT_DIR}/include/include + ${LIBS_PREBUILT_DIR}/include/collada + ) + file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}) + file(RENAME + ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4/${CMAKE_BUILD_TYPE}/collada14dom.lib + ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib + ) + elseif (${COLLADADOM_RESULT}) + execute_process( + COMMAND ${CMAKE_MAKE_PROGRAM} install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8 + OUTPUT_VARIABLE colladadom_installed + ) + file(RENAME + ${ARCH_PREBUILT_DIRS}/libcollada14dom.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a ) - file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "0") - endif (${COLLADADOM_RESULT}) - endif( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 ) -else( USESYSTEMLIBS ) + endif () + file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}") + endif () +endif () + +if (FALSE) use_system_binary( colladadom ) use_prebuilt_binary(colladadom) use_prebuilt_binary(minizip-ng) # needed for colladadom -use_prebuilt_binary(pcre) use_prebuilt_binary(libxml2) -endif( USESYSTEMLIBS ) - -target_link_libraries( ll::pcre INTERFACE pcrecpp pcre ) if (WINDOWS) - target_link_libraries( ll::minizip-ng INTERFACE libminizip ) + target_link_libraries( ll::minizip-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/minizip.lib ) else() - target_link_libraries( ll::minizip-ng INTERFACE minizip ) + target_link_libraries( ll::minizip-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libminizip.a ) endif() if (WINDOWS) - target_link_libraries( ll::libxml INTERFACE libxml2_a) + target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.lib Bcrypt.lib) else() - target_link_libraries( ll::libxml INTERFACE xml2) + target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.a) endif() +endif (FALSE) target_include_directories( ll::colladadom SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/collada ${LIBS_PREBUILT_DIR}/include/collada/1.4 ) if (WINDOWS) - target_link_libraries(ll::colladadom INTERFACE libcollada14dom23-s ll::libxml ll::minizip-ng ) -elseif (DARWIN) - target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng) + target_link_libraries(ll::colladadom INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib ll::libxml ll::minizip-ng ) else () - target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng) + target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng) endif() diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake index 383051a4a6..007b8dfba6 100644 --- a/indra/cmake/LLWindow.cmake +++ b/indra/cmake/LLWindow.cmake @@ -7,20 +7,19 @@ include(Prebuilt) include_guard() add_library( ll::SDL INTERFACE IMPORTED ) -if (USESYSTEMLIBS AND NOT DARWIN) +if (NOT (WINDOWS OR DARWIN)) include(FindPkgConfig) pkg_check_modules(Sdl2 REQUIRED sdl2) target_compile_definitions( ll::SDL INTERFACE LL_SDL=1) target_include_directories(ll::SDL SYSTEM INTERFACE ${Sdl2_INCLUDE_DIRS}) target_link_directories(ll::SDL INTERFACE ${Sdl2_LIBRARY_DIRS}) - if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) list(APPEND Sdl2_LIBRARIES X11) endif () target_link_libraries(ll::SDL INTERFACE ${Sdl2_LIBRARIES}) return () endif () - if (LINUX) #Must come first as use_system_binary can exit this file early target_compile_definitions( ll::SDL INTERFACE LL_SDL_VERSION=2 LL_SDL) diff --git a/indra/cmake/LibVLCPlugin.cmake b/indra/cmake/LibVLCPlugin.cmake index 779576a485..45ef25a63c 100644 --- a/indra/cmake/LibVLCPlugin.cmake +++ b/indra/cmake/LibVLCPlugin.cmake @@ -5,56 +5,46 @@ include(Prebuilt) include_guard() add_library( ll::libvlc INTERFACE IMPORTED ) -if (USESYSTEMLIBS) - if (DARWIN) - if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) - if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg) - file(DOWNLOAD - https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-arm64.dmg - ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg - ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg) - file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0") - endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0) - execute_process( - COMMAND hdiutil attach -noverify vlc-3.0.21-arm64.dmg - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} +if (DARWIN) + if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64) + set(ARCHITECTURE intel64) + else () + set(ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES}) + endif () + if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-${ARCHITECTURE}.dmg) + file(DOWNLOAD + https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-${ARCHITECTURE}.dmg + ${CMAKE_BINARY_DIR}/vlc-3.0.21-${ARCHITECTURE}.dmg ) - else (CMAKE_OSX_ARCHITECTURES MATCHES arm64) - if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg) - file(DOWNLOAD - https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-intel64.dmg - ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg - ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg) - file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0") - endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0) - execute_process( - COMMAND hdiutil attach -noverify vlc-3.0.21-intel64.dmg - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - ) - endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64) - target_include_directories( ll::libvlc SYSTEM INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/include) - target_link_directories( ll::libvlc INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib) - target_link_libraries( ll::libvlc INTERFACE vlc vlccore ) - else (DARWIN) - include(FindPkgConfig) - pkg_check_modules(Libvlc REQUIRED libvlc vlc-plugin) - target_include_directories( ll::libvlc SYSTEM INTERFACE ${Libvlc_INCLUDE_DIRS} ) - target_link_directories( ll::libvlc INTERFACE ${Libvlc_LIBRARY_DIRS} ) - target_link_libraries( ll::libvlc INTERFACE ${Libvlc_LIBRARIES} ) - endif (DARWIN) - set(LIBVLCPLUGIN ON CACHE BOOL - "LIBVLCPLUGIN support for the llplugin/llmedia test apps.") - return() -else (USESYSTEMLIBS) - + endif () + file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0") + endif () + execute_process( + COMMAND hdiutil attach -noverify vlc-3.0.21-${ARCHITECTURE}.dmg + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) + target_include_directories( ll::libvlc SYSTEM INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/include) + target_link_directories( ll::libvlc INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib) + target_link_libraries( ll::libvlc INTERFACE vlc vlccore ) +elseif (WINDOWS) use_prebuilt_binary(vlc-bin) + target_link_libraries( ll::libvlc INTERFACE + libvlc.lib + libvlccore.lib + ) +else () + include(FindPkgConfig) + pkg_check_modules(Libvlc REQUIRED libvlc vlc-plugin) + target_include_directories( ll::libvlc SYSTEM INTERFACE ${Libvlc_INCLUDE_DIRS} ) + target_link_directories( ll::libvlc INTERFACE ${Libvlc_LIBRARY_DIRS} ) + target_link_libraries( ll::libvlc INTERFACE ${Libvlc_LIBRARIES} ) +endif () + set(LIBVLCPLUGIN ON CACHE BOOL "LIBVLCPLUGIN support for the llplugin/llmedia test apps.") -endif (USESYSTEMLIBS) + +return() if (WINDOWS) target_link_libraries( ll::libvlc INTERFACE diff --git a/indra/cmake/LibraryInstall.cmake b/indra/cmake/LibraryInstall.cmake index b94841897c..a843f40c99 100644 --- a/indra/cmake/LibraryInstall.cmake +++ b/indra/cmake/LibraryInstall.cmake @@ -1,13 +1,13 @@ list(REMOVE_ITEM ${PROJECT_NAME}_HEADER_FILES CMakeLists.txt) #install(FILES ${${PROJECT_NAME}_HEADER_FILES} -# DESTINATION include/${PROJECT_NAME}) +# DESTINATION include/${PROJECT_NAME}) if (BUILD_SHARED_LIBS) - if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu) - set(_LIB lib/${ARCH}-linux-gnu) - elseif (EXISTS /lib64) - set(_LIB lib64) - else () - set(_LIB lib) - endif () - install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}) + if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + set(_LIB lib/${ARCH}-linux-gnu) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) + set(_LIB lib${ADDRESS_SIZE}) + else () + set(_LIB lib) + endif () + install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB}) endif () diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index 8e91dac109..a1a24de04b 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -67,7 +67,6 @@ elseif (WINDOWS) legacy_stdio_definitions ) elseif (DARWIN) - include(CMakeFindFrameworks) find_library(COREFOUNDATION_LIBRARY CoreFoundation) find_library(CARBON_LIBRARY Carbon) find_library(COCOA_LIBRARY Cocoa) diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake index 0dc4069431..5058614580 100644 --- a/indra/cmake/Meshoptimizer.cmake +++ b/indra/cmake/Meshoptimizer.cmake @@ -6,74 +6,53 @@ include(Prebuilt) include_guard() add_library( ll::meshoptimizer INTERFACE IMPORTED ) -if (NOT USESYSTEMLIBS) -use_system_binary(meshoptimizer) -else (NOT USESYSTEMLIBS) - if (NOT (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN)) +#use_system_binary(meshoptimizer) +if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_SYSTEM_NAME MATCHES FreeBSD OR WINDOWS) + if (NOT WINDOWS) find_package(meshoptimizer) - target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer) - endif (NOT (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN)) -endif (NOT USESYSTEMLIBS) - -if (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN OR NOT USESYSTEMLIBS) - if (USESYSTEMLIBS) - if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz) - file(DOWNLOAD - https://github.com/zeux/meshoptimizer/archive/refs/tags/v0.21.tar.gz - ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz - ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz) - file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz - DESTINATION ${CMAKE_BINARY_DIR} - ) - if (DARWIN) - try_compile(MESHOPTIMIZER_RESULT - PROJECT meshoptimizer - SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21 - BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21 - TARGET meshoptimizer - CMAKE_FLAGS - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.15 - OUTPUT_VARIABLE meshoptimizer_installed - ) - else (DARWIN) - try_compile(MESHOPTIMIZER_RESULT - PROJECT meshoptimizer - SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21 - BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21 - TARGET meshoptimizer - CMAKE_FLAGS - -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - OUTPUT_VARIABLE meshoptimizer_installed - ) - endif (DARWIN) - if (${MESHOPTIMIZER_RESULT}) - file( - COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/src/meshoptimizer.h - DESTINATION ${LIBS_PREBUILT_DIR}/include/meshoptimizer - ) - file( - COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/libmeshoptimizer.a - DESTINATION ${LIBS_PREBUILT_DIR}/lib/release - ) - file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "0") - endif (${MESHOPTIMIZER_RESULT}) - endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0) - else (USESYSTEMLIBS) + endif () + target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer) + return () +elseif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND NOT (${LINUX_DISTRO} MATCHES gentoo)) use_prebuilt_binary(meshoptimizer) - endif (USESYSTEMLIBS) +elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz) + file(DOWNLOAD + https://github.com/zeux/meshoptimizer/archive/refs/tags/v0.21.tar.gz + ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz + ) + endif () + file(ARCHIVE_EXTRACT + INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz + DESTINATION ${CMAKE_BINARY_DIR} + ) + try_compile(MESHOPTIMIZER_RESULT + PROJECT meshoptimizer + SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21 + BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21 + TARGET meshoptimizer + CMAKE_FLAGS + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} + -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} + -DCMAKE_INSTALL_INCLUDEDIR:PATH=${LIBS_PREBUILT_DIR}/include/meshoptimizer + ) + if (${MESHOPTIMIZER_RESULT}) + execute_process( + COMMAND ${CMAKE_MAKE_PROGRAM} install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21 + OUTPUT_VARIABLE meshoptimizer_installed + ) + file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "${meshoptimizer_installed}") + endif () +endif () if (WINDOWS) target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib) -elseif (LINUX) - target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a) -elseif (DARWIN) +else () target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a) endif (WINDOWS) target_include_directories( ll::meshoptimizer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/meshoptimizer) -endif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN OR NOT USESYSTEMLIBS) diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake index 1bf6c5086c..d6e5e53ac9 100644 --- a/indra/cmake/NDOF.cmake +++ b/indra/cmake/NDOF.cmake @@ -8,8 +8,8 @@ add_library( ll::ndof INTERFACE IMPORTED ) if (NDOF) if (WINDOWS OR DARWIN) - if (USESYSTEMLIBS) - if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/libndofdev_installed OR NOT ${libndofdev_installed} EQUAL 0) + #use_prebuilt_binary(libndofdev) + if (DARWIN AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/libndofdev_installed OR NOT ${libndofdev_installed} EQUAL 0)) file(DOWNLOAD https://github.com/secondlife/3p-libndofdev/archive/refs/tags/v0.1.8e9edc7.tar.gz ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7.tar.gz @@ -26,7 +26,7 @@ if (NDOF) CMAKE_FLAGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} - -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.15 + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_C_FLAGS:STRING=-DTARGET_OS_MAC\ -Wno-int-conversion OUTPUT_VARIABLE libndofdev_installed ) @@ -37,14 +37,11 @@ if (NDOF) ) file( COPY ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev/src/libndofdev.dylib - DESTINATION ${LIBS_PREBUILT_DIR}/lib/release + DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE} ) - file(WRITE ${PREBUILD_TRACKING_DIR}/libndofdev_installed "0") - endif (${LIBNDOFDEV_RESULT}) - endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/libndofdev_installed OR NOT ${libndofdev_installed} EQUAL 0) - else (USESYSTEMLIBS) - use_prebuilt_binary(libndofdev) - endif (USESYSTEMLIBS) + file(WRITE ${PREBUILD_TRACKING_DIR}/libndofdev_installed "${libndofdev_installed}") + endif () + endif () elseif (LINUX) use_prebuilt_binary(open-libndofdev) endif (WINDOWS OR DARWIN) diff --git a/indra/cmake/NGHTTP2.cmake b/indra/cmake/NGHTTP2.cmake index 6396a5bd01..7b2aa5971f 100644 --- a/indra/cmake/NGHTTP2.cmake +++ b/indra/cmake/NGHTTP2.cmake @@ -8,9 +8,7 @@ use_system_binary(nghttp2) use_prebuilt_binary(nghttp2) if (WINDOWS) target_link_libraries( ll::nghttp2 INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/nghttp2.lib) -elseif (DARWIN) - target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.dylib) -else (WINDOWS) - target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.a ) -endif (WINDOWS) +else () + target_link_libraries( ll::nghttp2 INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libnghttp2.a) +endif () target_include_directories( ll::nghttp2 SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/nghttp2) diff --git a/indra/cmake/NVAPI.cmake b/indra/cmake/NVAPI.cmake index ff5a5428e0..1bec691a18 100644 --- a/indra/cmake/NVAPI.cmake +++ b/indra/cmake/NVAPI.cmake @@ -4,10 +4,10 @@ include(Prebuilt) set(NVAPI ON CACHE BOOL "Use NVAPI.") if (NVAPI) - if (WINDOWS) + if (WINDOWS AND NOT ($ENV{MSYSTEM_CARCH} MATCHES aarch64)) add_library( ll::nvapi INTERFACE IMPORTED ) target_link_libraries( ll::nvapi INTERFACE nvapi) use_prebuilt_binary(nvapi) - endif (WINDOWS) + endif () endif (NVAPI) diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake index 6555027dc1..f63e55cdf3 100644 --- a/indra/cmake/OPENAL.cmake +++ b/indra/cmake/OPENAL.cmake @@ -19,15 +19,13 @@ endif() if (USE_OPENAL) add_library( ll::openal INTERFACE IMPORTED ) - if (NOT (USE_AUTOBUILD_3P OR USE_CONAN)) - target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) - include(FindPkgConfig) - pkg_check_modules(Openal REQUIRED freealut) - target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS}) - target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS}) - target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES}) - return () - endif () + target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) + include(FindPkgConfig) + pkg_check_modules(Openal REQUIRED freealut) + target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS}) + target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS}) + target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES}) + return () target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL") target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1) diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake index 9bb222d8e8..5729f6a10e 100644 --- a/indra/cmake/OpenJPEG.cmake +++ b/indra/cmake/OpenJPEG.cmake @@ -4,52 +4,70 @@ include(Prebuilt) include_guard() add_library( ll::openjpeg INTERFACE IMPORTED ) -if (NOT USESYSTEMLIBS) -use_system_binary(openjpeg) -elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) - include(FindPkgConfig) - pkg_check_modules(Openjpeg REQUIRED libopenjp2) - target_include_directories(ll::openjpeg SYSTEM INTERFACE ${Openjpeg_INCLUDE_DIRS}) - target_link_directories(ll::openjpeg INTERFACE ${Openjpeg_LIBRARY_DIRS}) - target_link_libraries(ll::openjpeg INTERFACE ${Openjpeg_LIBRARIES}) -endif (NOT USESYSTEMLIBS) -if (USESYSTEMLIBS AND (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)) - if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz) - file(DOWNLOAD - https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.5.2.tar.gz - ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz - ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz) - file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/openjpeg-2.5.2.tar.gz - DESTINATION ${CMAKE_BINARY_DIR} +#use_system_binary(openjpeg) +#use_prebuilt_binary(openjpeg) + +if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/openjpeg-2.5.3.tar.gz) + file(DOWNLOAD + https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.5.3.tar.gz + ${CMAKE_BINARY_DIR}/openjpeg-2.5.3.tar.gz ) - execute_process( - COMMAND cmake + endif () + file(ARCHIVE_EXTRACT + INPUT ${CMAKE_BINARY_DIR}/openjpeg-2.5.3.tar.gz + DESTINATION ${CMAKE_BINARY_DIR} + ) + + if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) + try_compile(OPENJPEG_RESULT + PROJECT OPENJPEG + SOURCE_DIR ${CMAKE_BINARY_DIR}/openjpeg-2.5.3 + BINARY_DIR ${CMAKE_BINARY_DIR}/openjpeg-2.5.3 + TARGET openjp2 + CMAKE_FLAGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} - . - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openjpeg-2.5.2 - RESULT_VARIABLE openjpeg_installed - ) - file( - COPY - ${CMAKE_BINARY_DIR}/openjpeg-2.5.2/src/lib/openjp2/cio.h - ${CMAKE_BINARY_DIR}/openjpeg-2.5.2/src/lib/openjp2/event.h - ${CMAKE_BINARY_DIR}/openjpeg-2.5.2/src/lib/openjp2/opj_config_private.h - DESTINATION ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5 + -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} + -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} + -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} + -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} + -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON + -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} + -DBUILD_CODEC:BOOL=OFF ) - file(WRITE ${PREBUILD_TRACKING_DIR}/openjpeg_installed "${openjpeg_installed}") - endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0) -else (USESYSTEMLIBS AND (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)) -use_prebuilt_binary(openjpeg) - if (NOT EXISTS ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5) - file(RENAME - ${LIBS_PREBUILT_DIR}/include/openjpeg - ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5 + if (${OPENJPEG_RESULT}) + execute_process( + COMMAND ${CMAKE_MAKE_PROGRAM} install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openjpeg-2.5.3 + OUTPUT_VARIABLE openjpeg_installed + ) + endif () + + else () + execute_process( + COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} -DBUILD_CODEC:BOOL=OFF + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openjpeg-2.5.3 + OUTPUT_VARIABLE openjpeg_installed ) - endif (NOT EXISTS ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5) + endif () + + file( + COPY + ${CMAKE_BINARY_DIR}/openjpeg-2.5.3/src/lib/openjp2/cio.h + ${CMAKE_BINARY_DIR}/openjpeg-2.5.3/src/lib/openjp2/event.h + ${CMAKE_BINARY_DIR}/openjpeg-2.5.3/src/lib/openjp2/opj_config_private.h + DESTINATION ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5 + ) + file(WRITE ${PREBUILD_TRACKING_DIR}/openjpeg_installed "${openjpeg_installed}") +endif () +if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) target_link_libraries(ll::openjpeg INTERFACE openjp2 ) -endif (USESYSTEMLIBS AND (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR DARWIN OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)) +else () + include(FindPkgConfig) + pkg_check_modules(Openjpeg REQUIRED libopenjp2) + target_include_directories(ll::openjpeg SYSTEM INTERFACE ${Openjpeg_INCLUDE_DIRS}) + target_link_directories(ll::openjpeg INTERFACE ${Openjpeg_LIBRARY_DIRS}) + target_link_libraries(ll::openjpeg INTERFACE ${Openjpeg_LIBRARIES}) +endif () target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index 118ca84132..afa2ba377d 100644 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -1,18 +1,18 @@ # -*- cmake -*- include(Prebuilt) +include(Linking) include_guard() add_library( ll::openssl INTERFACE IMPORTED ) -if (NOT USESYSTEMLIBS) +if ($ENV{MSYSTEM_CARCH} MATCHES aarch64) use_system_binary(openssl) -endif (NOT USESYSTEMLIBS) -if (DARWIN OR LINUX OR NOT USESYSTEMLIBS) +elseif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR WINDOWS) use_prebuilt_binary(openssl) if (DARWIN) execute_process( COMMAND lipo -archs libcrypto.a - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} OUTPUT_VARIABLE crypto_archs OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -22,12 +22,12 @@ use_prebuilt_binary(openssl) libcrypto.a -thin ${CMAKE_OSX_ARCHITECTURES} -output libcrypto.a - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} ) - endif (NOT ${crypto_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES}) + endif () execute_process( COMMAND lipo -archs libssl.a - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} OUTPUT_VARIABLE ssl_archs OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -37,152 +37,44 @@ use_prebuilt_binary(openssl) libssl.a -thin ${CMAKE_OSX_ARCHITECTURES} -output libssl.a - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release + WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE} ) - endif (NOT ${ssl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES}) - endif (DARWIN) + endif () + endif () elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openssl_installed OR NOT ${openssl_installed} EQUAL 0) - if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55.tar.gz) + if (NOT EXISTS ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz) file(DOWNLOAD - https://github.com/secondlife/3p-openssl/archive/refs/tags/v1.1.1q.de53f55.tar.gz - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55.tar.gz + https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1w.tar.gz + ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55.tar.gz) + endif () file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55.tar.gz + INPUT ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz DESTINATION ${CMAKE_BINARY_DIR} ) execute_process( - COMMAND ./config no-shared - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl + COMMAND ./config no-shared --openssldir=${LIBS_PREBUILT_DIR}/ssl --prefix=${LIBS_PREBUILT_DIR} --libdir=${ARCH_PREBUILT_DIRS_RELEASE} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w ) execute_process( COMMAND make -j${MAKE_JOBS} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl - RESULT_VARIABLE openssl_installed - ) - file( - COPY - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/aes.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/bnerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/conf_api.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/dtls1.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/evperr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/obj_mac.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/pkcs12.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/rsa.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/stack.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/x509.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/asn1.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/buffer.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/conferr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/e_os2.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/hmac.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/objects.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/pkcs12err.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/rsaerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/store.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/x509_vfy.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/asn1_mac.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/buffererr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/crypto.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ebcdic.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/idea.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/objectserr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/pkcs7.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/safestack.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/storeerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/x509err.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/asn1err.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/camellia.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/cryptoerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ec.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/kdf.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ocsp.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/pkcs7err.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/seed.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/symhacks.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/x509v3.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/asn1t.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/cast.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ct.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ecdh.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/kdferr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ocsperr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/rand.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/sha.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/tls1.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/x509v3err.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/async.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/cmac.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/cterr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ecdsa.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/lhash.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/opensslconf.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/rand_drbg.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/srp.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ts.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/asyncerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/cms.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/des.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ecerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/md2.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/opensslv.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/randerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/srtp.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/tserr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/bio.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/cmserr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/dh.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/engine.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/md4.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ossl_typ.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/rc2.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ssl.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/txt_db.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/bioerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/comp.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/dherr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/engineerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/md5.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/pem.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/rc4.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ssl2.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ui.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/blowfish.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/comperr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/dsa.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/err.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/mdc2.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/pem2.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/rc5.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ssl3.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/uierr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/bn.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/conf.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/dsaerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/evp.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/modes.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/pemerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/ripemd.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/sslerr.h - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/include/openssl/whrlpool.h - DESTINATION ${LIBS_PREBUILT_DIR}/include/openssl + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w ) - file( - COPY - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/libcrypto.a - ${CMAKE_BINARY_DIR}/3p-openssl-1.1.1q.de53f55/openssl/libssl.a - DESTINATION ${LIBS_PREBUILT_DIR}/lib/release + execute_process( + COMMAND make install + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w + RESULT_VARIABLE openssl_installed ) file(WRITE ${PREBUILD_TRACKING_DIR}/openssl_installed "${openssl_installed}") -endif (DARWIN OR LINUX OR NOT USESYSTEMLIBS) +endif () if (WINDOWS) - target_link_libraries(ll::openssl INTERFACE libssl libcrypto) + target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.lib ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.lib Crypt32.lib) elseif (LINUX) - target_link_libraries(ll::openssl INTERFACE ssl crypto dl) + target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.a ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.a dl) else() target_link_libraries(ll::openssl INTERFACE ssl crypto) endif (WINDOWS) +if (NOT WINDOWS) target_include_directories( ll::openssl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) +endif () diff --git a/indra/cmake/OpenXR.cmake b/indra/cmake/OpenXR.cmake new file mode 100644 index 0000000000..b37ed50939 --- /dev/null +++ b/indra/cmake/OpenXR.cmake @@ -0,0 +1,24 @@ +# -*- cmake -*- + +include(Prebuilt) + +include_guard() +add_library( ll::openxr INTERFACE IMPORTED ) + +if(USE_CONAN ) + target_link_libraries( ll::openxr INTERFACE CONAN_PKG::openxr ) + return() +elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + return() +endif() + +use_prebuilt_binary(openxr) +if (WINDOWS) + target_link_libraries( ll::openxr INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/openxr_loader.lib ) +else() + target_link_libraries( ll::openxr INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libopenxr_loader.a ) +endif (WINDOWS) + +if( NOT LINUX ) + target_include_directories( ll::openxr SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) +endif() diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake index 044262bc8d..e5893e9a20 100644 --- a/indra/cmake/PNG.cmake +++ b/indra/cmake/PNG.cmake @@ -7,8 +7,8 @@ add_library( ll::libpng INTERFACE IMPORTED ) use_system_binary(libpng) use_prebuilt_binary(libpng) if (WINDOWS) - target_link_libraries(ll::libpng INTERFACE libpng16) + target_link_libraries(ll::libpng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libpng16.lib) else() - target_link_libraries(ll::libpng INTERFACE png16 ) + target_link_libraries(ll::libpng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libpng16.a) endif() target_include_directories( ll::libpng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/libpng16) diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index 4034599fde..2d5eb5d805 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -40,38 +40,37 @@ macro (use_prebuilt_binary _binary) --install-dir=${AUTOBUILD_INSTALL_DIR} ${_binary} ") endif(DEBUG_PREBUILT) - if(USESYSTEMLIBS) + execute_process(COMMAND xmllint + --xpath + "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'common')]/text()" autobuild.xml + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/.. + OUTPUT_VARIABLE package_url + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if ("${package_url}" STREQUAL "") + string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name) + if (${system_name} MATCHES freebsd) + set(system_name "linux") + endif (${system_name} MATCHES freebsd) execute_process(COMMAND xmllint --xpath - "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'common')]/text()" autobuild.xml + "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'${system_name}')]/text()" autobuild.xml WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/.. OUTPUT_VARIABLE package_url OUTPUT_STRIP_TRAILING_WHITESPACE ) - if ("${package_url}" STREQUAL "") - string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name) - if (${system_name} MATCHES freebsd) - set(system_name "linux") - endif (${system_name} MATCHES freebsd) - execute_process(COMMAND xmllint - --xpath - "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'${system_name}')]/text()" autobuild.xml - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/.. - OUTPUT_VARIABLE package_url - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - endif ("${package_url}" STREQUAL "") - string(REGEX REPLACE "^https://(megapahit.net/downloads|github.com/secondlife|automated-builds-secondlife-com.s3.amazonaws.com/ct2).*/" "" package_name ${package_url}) - file(DOWNLOAD - ${package_url} - ${CMAKE_BINARY_DIR}/${package_name} - ) - file(ARCHIVE_EXTRACT - INPUT ${CMAKE_BINARY_DIR}/${package_name} - DESTINATION ${AUTOBUILD_INSTALL_DIR} - ) - set(${_binary}_installed 0) - else(USESYSTEMLIBS) + endif ("${package_url}" STREQUAL "") + string(REGEX REPLACE "^https?://(megapahit.net/downloads|github.com/secondlife|automated-builds-secondlife-com.s3.amazonaws.com/ct2).*/" "" package_name ${package_url}) + file(DOWNLOAD + ${package_url} + ${CMAKE_BINARY_DIR}/${package_name} + ) + file(ARCHIVE_EXTRACT + INPUT ${CMAKE_BINARY_DIR}/${package_name} + DESTINATION ${AUTOBUILD_INSTALL_DIR} + ) + set(${_binary}_installed 0) + if(FALSE) execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}" install --install-dir=${AUTOBUILD_INSTALL_DIR} @@ -79,7 +78,7 @@ macro (use_prebuilt_binary _binary) WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE ${_binary}_installed ) - endif(USESYSTEMLIBS) + endif() file(WRITE ${PREBUILD_TRACKING_DIR}/${_binary}_installed "${${_binary}_installed}") endif(${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0) @@ -92,6 +91,22 @@ endmacro (use_prebuilt_binary _binary) #Sadly we need a macro here, otherwise the return() will not properly work macro ( use_system_binary package ) + include(FindPkgConfig) + pkg_check_modules(${package} ${package}) + if( ${package}_FOUND ) + target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} ) + else() + pkg_check_modules(${package} lib${package}) + if( ${package}_FOUND ) + target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} ) + else() + find_package( ${package} REQUIRED ) + endif() + endif() + target_include_directories( ll::${package} SYSTEM INTERFACE ${${package}_INCLUDE_DIRS} ) + target_link_libraries( ll::${package} INTERFACE ${${package}_LIBRARIES} ) + return() + if( USE_CONAN ) target_link_libraries( ll::${package} INTERFACE CONAN_PKG::${package} ) foreach( extra_pkg "${ARGN}" ) @@ -100,22 +115,6 @@ macro ( use_system_binary package ) endif() endforeach() return() - elseif( NOT USE_AUTOBUILD_3P ) - include(FindPkgConfig) - pkg_check_modules(${package} ${package}) - if( ${package}_FOUND ) - target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} ) - else() - pkg_check_modules(${package} lib${package}) - if( ${package}_FOUND ) - target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} ) - else() - find_package( ${package} REQUIRED ) - endif() - endif() - target_include_directories( ll::${package} SYSTEM INTERFACE ${${package}_INCLUDE_DIRS} ) - target_link_libraries( ll::${package} INTERFACE ${${package}_LIBRARIES} ) - return() endif() endmacro() @@ -123,10 +122,10 @@ find_package(Patch) # Download the third party software archive and patch it. macro(prepare_thirdparty url filename dirname patch hash) - file(DOWNLOAD ${url} ${filename} EXPECTED_HASH SHA512=${hash}) + file(DOWNLOAD ${url} ${filename}) file(ARCHIVE_EXTRACT INPUT ${filename} - DESTINATION ${CMAKE_SOURCE_DIR}/../..) + DESTINATION ${CMAKE_BINARY_DIR}) execute_process(COMMAND ${Patch_EXECUTABLE} "-p1" "-i" ${CMAKE_SOURCE_DIR}/../patches/${patch} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../${dirname}) + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${dirname}) endmacro() diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake index da5d2ef22c..7cce190f6a 100644 --- a/indra/cmake/Python.cmake +++ b/indra/cmake/Python.cmake @@ -13,7 +13,7 @@ elseif (WINDOWS) foreach(hive HKEY_CURRENT_USER HKEY_LOCAL_MACHINE) # prefer more recent Python versions to older ones, if multiple versions # are installed - foreach(pyver 3.12 3.11 3.10 3.9 3.8 3.7) + foreach(pyver 3.13 3.12 3.11 3.10 3.9 3.8 3.7) list(APPEND regpaths "[${hive}\\SOFTWARE\\Python\\PythonCore\\${pyver}\\InstallPath]") endforeach() endforeach() diff --git a/indra/cmake/Tracy.cmake b/indra/cmake/Tracy.cmake index 32c02edb93..a7eac2711f 100644 --- a/indra/cmake/Tracy.cmake +++ b/indra/cmake/Tracy.cmake @@ -4,14 +4,37 @@ include(Prebuilt) include_guard() add_library( ll::tracy INTERFACE IMPORTED ) -set(USE_TRACY OFF CACHE BOOL "Use Tracy profiler.") +# default Tracy profiling on for test builds, but off for all others +string(TOLOWER ${VIEWER_CHANNEL} channel_lower) +if(channel_lower MATCHES "^second life test") + option(USE_TRACY "Use Tracy profiler." ON) +else() + option(USE_TRACY "Use Tracy profiler." OFF) +endif() if (USE_TRACY) + option(USE_TRACY_ON_DEMAND "Use on-demand Tracy profiling." ON) + option(USE_TRACY_LOCAL_ONLY "Disallow remote Tracy profiling." OFF) + use_system_binary(tracy) use_prebuilt_binary(tracy) target_include_directories( ll::tracy SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/tracy) - target_link_libraries( ll::tracy INTERFACE TracyClient ) + + target_compile_definitions(ll::tracy INTERFACE -DTRACY_ENABLE=1 -DTRACY_ONLY_IPV4=1) + + if (USE_TRACY_ON_DEMAND) + target_compile_definitions(ll::tracy INTERFACE -DTRACY_ON_DEMAND=1) + endif () + + if (USE_TRACY_LOCAL_ONLY) + target_compile_definitions(ll::tracy INTERFACE -DTRACY_NO_BROADCAST=1 -DTRACY_ONLY_LOCALHOST=1) + endif () + + # GHA runners don't always provide invariant TSC support, but always build with LL_TESTS enabled + if (DARWIN AND LL_TESTS) + target_compile_definitions(ll::tracy INTERFACE -DTRACY_TIMER_FALLBACK=1) + endif () # See: indra/llcommon/llprofiler.h add_compile_definitions(LL_PROFILER_CONFIGURATION=3) diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index a3423bb895..85e74f03e4 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -5,10 +5,7 @@ include(GLIB) add_library( ll::uilibraries INTERFACE IMPORTED ) -if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - if (NOT USESYSTEMLIBS) - use_prebuilt_binary(fltk) - endif () +if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD) target_compile_definitions(ll::uilibraries INTERFACE LL_FLTK=1 LL_X11=1 ) if( USE_CONAN ) @@ -30,7 +27,7 @@ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") ll::gio ) -endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") +endif () if( WINDOWS ) target_link_libraries( ll::uilibraries INTERFACE opengl32 @@ -48,7 +45,7 @@ if( WINDOWS ) ) endif() -if (NOT USESYSTEMLIBS) +if (FALSE) target_include_directories( ll::uilibraries SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) diff --git a/indra/cmake/URIPARSER.cmake b/indra/cmake/URIPARSER.cmake deleted file mode 100644 index 6c33ff70e1..0000000000 --- a/indra/cmake/URIPARSER.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# -*- cmake -*- - -include_guard() - -include(Prebuilt) - -add_library( ll::uriparser INTERFACE IMPORTED ) - -use_system_binary( uriparser ) - -use_prebuilt_binary(uriparser) -if (WINDOWS) - target_link_libraries( ll::uriparser INTERFACE uriparser) -elseif (LINUX) - target_link_libraries( ll::uriparser INTERFACE uriparser) -elseif (DARWIN) - target_link_libraries( ll::uriparser INTERFACE liburiparser.dylib) -endif (WINDOWS) -target_include_directories( ll::uriparser SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/uriparser) diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake index 7aa05ff5a6..1fd17a0142 100644 --- a/indra/cmake/UnixInstall.cmake +++ b/indra/cmake/UnixInstall.cmake @@ -14,13 +14,13 @@ if (INSTALL) "Top-level installation directory.") endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD) - if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu) + if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu)) set(_LIB lib/${ARCH}-linux-gnu) - elseif (EXISTS /lib64) - set(_LIB lib64) - else (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu) + elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR (${LINUX_DISTRO} MATCHES gentoo)) + set(_LIB lib${ADDRESS_SIZE}) + else () set(_LIB lib) - endif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu) + endif () set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB} CACHE PATH "Installation directory for read-only shared files.") @@ -35,7 +35,13 @@ if (INSTALL) set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/${VIEWER_BINARY_NAME} CACHE PATH "Installation directory for read-only data files.") - set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec/${VIEWER_BINARY_NAME} - CACHE PATH - "Installation directory for non-manual executables.") + if (${LINUX_DISTRO} MATCHES arch) + set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/lib/${VIEWER_BINARY_NAME} + CACHE PATH + "Installation directory for non-manual executables.") + else (${LINUX_DISTRO} MATCHES arch) + set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec/${VIEWER_BINARY_NAME} + CACHE PATH + "Installation directory for non-manual executables.") + endif (${LINUX_DISTRO} MATCHES arch) endif (INSTALL) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 0a5191ff08..4ab69e30aa 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -1,23 +1,23 @@ # -*- cmake -*- include(Prebuilt) -if (NOT DARWIN) +if (NOT (DARWIN OR WINDOWS)) add_library( ll::fontconfig INTERFACE IMPORTED ) find_package(Fontconfig REQUIRED) target_link_libraries( ll::fontconfig INTERFACE Fontconfig::Fontconfig ) -endif (NOT DARWIN) +endif () -if( USE_AUTOBUILD_3P ) +if (FALSE) +if( NOT USE_CONAN ) use_prebuilt_binary(libhunspell) endif() -if (NOT USESYSTEMLIBS) use_prebuilt_binary(slvoice) -endif (NOT USESYSTEMLIBS) +endif (FALSE) -if ((${LINUX_DISTRO} MATCHES debian OR DARWIN) OR NOT USESYSTEMLIBS) +if (${LINUX_DISTRO} MATCHES debian OR DARWIN OR WINDOWS) use_prebuilt_binary(nanosvg) -endif ((${LINUX_DISTRO} MATCHES debian OR DARWIN) OR NOT USESYSTEMLIBS) +endif () use_prebuilt_binary(viewer-fonts) use_prebuilt_binary(emoji_shortcodes) diff --git a/indra/cmake/VulkanGltf.cmake b/indra/cmake/VulkanGltf.cmake index d7083a33c9..94541d5307 100644 --- a/indra/cmake/VulkanGltf.cmake +++ b/indra/cmake/VulkanGltf.cmake @@ -1,7 +1,5 @@ # -*- cmake -*- include(Prebuilt) -if (NOT USESYSTEMLIBS) use_prebuilt_binary(vulkan_gltf) -endif () diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake index be51957794..5a750fe7f3 100644 --- a/indra/cmake/WebRTC.cmake +++ b/indra/cmake/WebRTC.cmake @@ -6,21 +6,25 @@ include_guard() add_library( ll::webrtc INTERFACE IMPORTED ) target_include_directories( ll::webrtc SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/webrtc" "${LIBS_PREBUILT_DIR}/include/webrtc/third_party/abseil-cpp") -if (CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR (${LINUX_DISTRO} MATCHES fedora) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) +if (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR WINDOWS) +use_prebuilt_binary(webrtc) +elseif (NOT (CMAKE_SYSTEM_NAME MATCHES FreeBSD OR ($ENV{MSYSTEM_CARCH} MATCHES aarch64))) target_compile_definitions(ll::webrtc INTERFACE CM_WEBRTC=1) if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0) - if (LINUX) - set(WEBRTC_PLATFORM linux-x64) - else (LINUX) - set(WEBRTC_PLATFORM macos-arm64) - endif (LINUX) + if (DARWIN) + set(WEBRTC_PLATFORM macos-arm64) + elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64) + set(WEBRTC_PLATFORM linux-arm64) + else () + set(WEBRTC_PLATFORM linux-x64) + endif () if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz) file(DOWNLOAD https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-${WEBRTC_PLATFORM}.tar.xz ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz SHOW_PROGRESS ) - endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz) + endif () file(ARCHIVE_EXTRACT INPUT ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz DESTINATION ${LIBS_PREBUILT_DIR} @@ -28,54 +32,52 @@ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR (${LINUX_DISTRO} MATCHES fedora) OR file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/webrtc) file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/webrtc) foreach(directory - api - audio - base - build - buildtools - call - common_audio - common_video - examples - logging - media - modules - net - p2p - pc - rtc_base - rtc_tools - sdk - stats - system_wrappers - test - testing - third_party - tools - video - ) - file(RENAME - ${LIBS_PREBUILT_DIR}/include/${directory} - ${LIBS_PREBUILT_DIR}/include/webrtc/${directory} + api + audio + base + build + buildtools + call + common_audio + common_video + examples + logging + media + modules + net + p2p + pc + rtc_base + rtc_tools + sdk + stats + system_wrappers + test + testing + third_party + tools + video ) + file(RENAME + ${LIBS_PREBUILT_DIR}/include/${directory} + ${LIBS_PREBUILT_DIR}/include/webrtc/${directory} + ) endforeach() file(RENAME - ${LIBS_PREBUILT_DIR}/lib/libwebrtc.a - ${LIBS_PREBUILT_DIR}/lib/release/libwebrtc.a - ) - if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) - file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework) - file(RENAME - ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/${WEBRTC_PLATFORM}/WebRTC.framework - ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework + ${LIBS_PREBUILT_DIR}/lib/libwebrtc.a + ${ARCH_PREBUILT_DIRS_RELEASE}/libwebrtc.a ) - file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks) - endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64) + if (CMAKE_OSX_ARCHITECTURES MATCHES arm64) + file(REMOVE_RECURSE ${ARCH_PREBUILT_DIRS_RELEASE}/WebRTC.framework) + file(RENAME + ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/${WEBRTC_PLATFORM}/WebRTC.framework + ${ARCH_PREBUILT_DIRS_RELEASE}/WebRTC.framework + ) + file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks) + endif () file(WRITE ${PREBUILD_TRACKING_DIR}/webrtc_installed "0") - endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0) -elseif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD) -use_prebuilt_binary(webrtc) -endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR (${LINUX_DISTRO} MATCHES fedora) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)) + endif () +endif () if (WINDOWS) target_link_libraries( ll::webrtc INTERFACE webrtc.lib ) diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake deleted file mode 100644 index a008e06d62..0000000000 --- a/indra/cmake/XmlRpcEpi.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) - -include_guard() -add_library( ll::xmlrpc-epi INTERFACE IMPORTED ) - -if (NOT USESYSTEMLIBS) -use_system_binary( xmlrpc-epi ) -endif (NOT USESYSTEMLIBS) - -if (${LINUX_DISTRO} MATCHES opensuse-tumbleweed OR DARWIN OR NOT USESYSTEMLIBS) -use_prebuilt_binary(xmlrpc-epi) - if (DARWIN) - execute_process( - COMMAND lipo -archs libxmlrpc-epi.0.dylib - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release - OUTPUT_VARIABLE xmlrpc-epi_archs - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - if (NOT ${xmlrpc-epi_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES}) - execute_process( - COMMAND lipo - libxmlrpc-epi.0.dylib - -thin ${CMAKE_OSX_ARCHITECTURES} - -output libxmlrpc-epi.0.dylib - WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release - ) - endif (NOT ${xmlrpc-epi_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES}) - endif (DARWIN) -endif (${LINUX_DISTRO} MATCHES opensuse-tumbleweed OR DARWIN OR NOT USESYSTEMLIBS) -target_link_libraries(ll::xmlrpc-epi INTERFACE xmlrpc-epi ) -if (NOT USESYSTEMLIBS) -target_include_directories( ll::xmlrpc-epi SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) -elseif (${LINUX_DISTRO} MATCHES opensuse-tumbleweed OR DARWIN) - target_include_directories( ll::xmlrpc-epi SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/xmlrpc-epi) -elseif (LINUX) - target_include_directories( ll::xmlrpc-epi SYSTEM INTERFACE ${CMAKE_SYSROOT}/usr/include/xmlrpc-epi) -endif () diff --git a/indra/cmake/ZLIBNG.cmake b/indra/cmake/ZLIBNG.cmake index 60164116dd..7c2c59a68d 100644 --- a/indra/cmake/ZLIBNG.cmake +++ b/indra/cmake/ZLIBNG.cmake @@ -5,22 +5,22 @@ include(Prebuilt) include_guard() add_library( ll::zlib-ng INTERFACE IMPORTED ) +pkg_check_modules(Zlib REQUIRED zlib) +target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${Zlib_INCLUDE_DIRS}) +target_link_directories( ll::zlib-ng INTERFACE ${Zlib_LIBRARY_DIRS} ) +target_link_libraries( ll::zlib-ng INTERFACE ${Zlib_LIBRARIES}) +return() + if(USE_CONAN ) target_link_libraries( ll::zlib-ng INTERFACE CONAN_PKG::zlib ) return() -elseif(NOT USE_AUTOBUILD_3P) - pkg_check_modules(Zlib REQUIRED zlib) - target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${Zlib_INCLUDE_DIRS}) - target_link_directories( ll::zlib-ng INTERFACE ${Zlib_LIBRARY_DIRS} ) - target_link_libraries( ll::zlib-ng INTERFACE ${Zlib_LIBRARIES}) - return() endif() use_prebuilt_binary(zlib-ng) if (WINDOWS) - target_link_libraries( ll::zlib-ng INTERFACE zlib ) + target_link_libraries( ll::zlib-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/zlib.lib ) else() - target_link_libraries( ll::zlib-ng INTERFACE z ) + target_link_libraries( ll::zlib-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libz.a ) endif (WINDOWS) if( NOT LINUX ) diff --git a/indra/cmake/xxHash.cmake b/indra/cmake/xxHash.cmake index 2dcab005ba..84f4f4e0f2 100644 --- a/indra/cmake/xxHash.cmake +++ b/indra/cmake/xxHash.cmake @@ -6,10 +6,8 @@ set (XXHASH_CMAKE_INCLUDED TRUE) include(Prebuilt) -if (NOT (USE_AUTOBUILD_3P OR USE_CONAN)) - include(FindPkgConfig) - pkg_check_modules(Xxhash REQUIRED libxxhash) - return () -endif () +include(FindPkgConfig) +pkg_check_modules(Xxhash REQUIRED libxxhash) +return () use_prebuilt_binary(xxhash) |