diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/cmake/LLPrimitive.cmake | 18 | ||||
-rw-r--r-- | indra/cmake/Prebuilt.cmake | 11 | ||||
-rw-r--r-- | indra/llprimitive/CMakeLists.txt | 20 |
3 files changed, 35 insertions, 14 deletions
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 4aa46a5cf8..1e77ec3346 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -19,15 +19,11 @@ if( USE_CONAN ) endif() if( USESYSTEMLIBS ) - if( LINUX ) - include(FindPkgConfig) - pkg_check_modules(Colladadom REQUIRED collada-dom) - target_compile_definitions( ll::colladadom INTERFACE COLLADA_DOM_SUPPORT141 ) - target_include_directories( ll::colladadom SYSTEM INTERFACE ${Colladadom_INCLUDE_DIRS} ${Colladadom_INCLUDE_DIRS}/1.4 ) - target_link_directories( ll::colladadom INTERFACE ${Colladadom_LIBRARY_DIRS} ) - target_link_libraries( ll::colladadom INTERFACE ${Colladadom_LIBRARIES} ) + 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 ) + 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) file(DOWNLOAD @@ -79,12 +75,6 @@ if( USESYSTEMLIBS ) ) endif (${COLLADADOM_RESULT}) else( DARWIN ) - if( CMAKE_SYSTEM_NAME MATCHES FreeBSD ) - execute_process( - COMMAND sed -i "" -e "s/linux/FreeBSD/g" dae/daeUtils.cpp - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src - ) - endif( CMAKE_SYSTEM_NAME MATCHES FreeBSD ) 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 diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index 8d911b339c..4034599fde 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -119,3 +119,14 @@ macro ( use_system_binary package ) endif() endmacro() +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(ARCHIVE_EXTRACT INPUT ${filename} + DESTINATION ${CMAKE_SOURCE_DIR}/../..) + execute_process(COMMAND ${Patch_EXECUTABLE} "-p1" "-i" + ${CMAKE_SOURCE_DIR}/../patches/${patch} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../${dirname}) +endmacro() diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt index dea85f8f4f..19bae2112b 100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -3,6 +3,7 @@ project(llprimitive) include(00-Common) +include(Prebuilt) include(LLCommon) include(LLCoreHttp) include(LLPhysicsExtensions) @@ -11,6 +12,25 @@ include(GLH) include(GLM) include(TinyGLTF) +if(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD ) + prepare_thirdparty( + "https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r7.tar.gz" + "colladadom-v2.3-r7.tar.gz" + "3p-colladadom-2.3-r7" + "collada-dom-v2.3-r7.patch" + "0d7a13531eb0de8c617b48af90c3b5b22c2a0b566069d1a0c36f9602dbfeb9ebab1516556e6dda34645d63354c3c6539375d7e5b8c0b36baba11312d18a3c705" + ) + set(OPT_COLLADA14 TRUE) + add_subdirectory( + "${CMAKE_SOURCE_DIR}/../../3p-colladadom-2.3-r7" "colladadom") + target_include_directories( + ll::colladadom INTERFACE + ${colladadom_SOURCE_DIR}/include + ${colladadom_SOURCE_DIR}/include/1.4 + ) + target_link_libraries( ll::colladadom INTERFACE collada14dom ) +endif(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD ) + set(llprimitive_SOURCE_FILES lldaeloader.cpp llgltfloader.cpp |