diff options
| -rw-r--r-- | indra/cmake/DepsBuild.cmake | 17 | ||||
| -rw-r--r-- | indra/cmake/LLPrimitive.cmake | 8 | ||||
| -rw-r--r-- | indra/cmake/Prebuilt.cmake | 11 | ||||
| -rw-r--r-- | indra/llprimitive/CMakeLists.txt | 14 | ||||
| -rw-r--r-- | patches/collada-dom-v2.3-r7.patch | 122 | 
5 files changed, 142 insertions, 30 deletions
| diff --git a/indra/cmake/DepsBuild.cmake b/indra/cmake/DepsBuild.cmake deleted file mode 100644 index f4d80e9a67..0000000000 --- a/indra/cmake/DepsBuild.cmake +++ /dev/null @@ -1,17 +0,0 @@ -# -*- cmake -*- -find_program(GIT git) - -macro( checkout_deps_repository DEPSREPO DEPSDIR DEPSTAG) -  execute_process( -	  COMMAND ${GIT} "clone" ${DEPSREPO} ${DEPSDIR} -	  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../.. -  ) -  execute_process( -	  COMMAND ${GIT} "checkout" ${DEPSTAG} -	  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../${DEPSDIR} -  ) -  execute_process( -	  COMMAND ${GIT} "pull" -	  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../${DEPSDIR} -  ) -endmacro( checkout_deps_repository ) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index 6f14c04efc..a649765720 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -19,15 +19,7 @@ if( USE_CONAN )  endif()  if(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD ) -if(FALSE) -  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} )    return () -endif(FALSE)  endif(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )  if( USESYSTEMLIBS ) 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 985c15b99f..19bae2112b 100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -3,7 +3,7 @@  project(llprimitive)  include(00-Common) -include(DepsBuild) +include(Prebuilt)  include(LLCommon)  include(LLCoreHttp)  include(LLPhysicsExtensions) @@ -13,12 +13,16 @@ include(GLM)  include(TinyGLTF)  if(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD ) -  checkout_deps_repository( -	"https://github.com/oikumene/3p-colladadom-test.git" -	"collada-dom" "v2.3-r7-megapahit" +  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}/../../collada-dom "collada-dom") +  add_subdirectory( +	  "${CMAKE_SOURCE_DIR}/../../3p-colladadom-2.3-r7" "colladadom")    target_include_directories(  	  ll::colladadom INTERFACE  	  ${colladadom_SOURCE_DIR}/include diff --git a/patches/collada-dom-v2.3-r7.patch b/patches/collada-dom-v2.3-r7.patch new file mode 100644 index 0000000000..485693ec7a --- /dev/null +++ b/patches/collada-dom-v2.3-r7.patch @@ -0,0 +1,122 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b1c1993..9df2dee 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,14 +1,35 @@ +-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) +-set(COLLADA14_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include/1.4) +-set(COLLADA15_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include/1.5) ++project(colladadom) ++cmake_minimum_required(VERSION 3.17) ++ ++include(FindPkgConfig) ++ ++pkg_check_modules(LIBXML2 libxml-2.0) ++pkg_check_modules(MINIZIP minizip-ng) ++pkg_check_modules(ZLIB zlib) ++ ++set(COLLADA_DOM_SOVERSION "2") ++set(COLLADA_DOM_VERSION "2.3") ++set(COLLADA_DOM_INCLUDE_INSTALL_DIR ++	${CMAKE_BINARY_DIR}/packages/include/collada ++) ++set(COLLADA_DOM_LIBS_INSTALL_DIR ++	${CMAKE_BINARY_DIR}/packages/lib ++) ++file(MAKE_DIRECTORY ++	${COLLADA_DOM_INCLUDE_INSTALL_DIR}/1.4 ++	${COLLADA_DOM_INCLUDE_INSTALL_DIR}/1.5 ++	${COLLADA_DOM_LIBS_INSTALL_DIR} ++) ++ + file(GLOB dae_files ${CMAKE_CURRENT_SOURCE_DIR}/src/dae/*.cpp) + file(GLOB libxmlplugin_files ${CMAKE_CURRENT_SOURCE_DIR}/src/modules/LIBXMLPlugin/*.cpp) + file(GLOB stddatabase_files ${CMAKE_CURRENT_SOURCE_DIR}/src/modules/STLDatabase/*.cpp) + file(GLOB stderrplugin_files ${CMAKE_CURRENT_SOURCE_DIR}/src/modules/stdErrPlugin/*.cpp) +  + set(COLLADA_BASE_SOURCES ${dae_files} ${libxmlplugin_files} ${stddatabase_files} ${stderrplugin_files}) +-set(COLLADA_LIBS minizip ${ZLIB_LIBRARIES} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY}) +-set(COLLADA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} ${Boost_CFLAGS} -DDOM_INCLUDE_LIBXML") ++set(COLLADA_LIBS ${LIBXML2_LIBRARIES} ${MINIZIP_LIBRARIES} ${ZLIB_LIBRARIES} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY}) ++list(JOIN MINIZIP_CFLAGS " " VAR_MINIZIP_CFLAGS) ++set(COLLADA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} ${VAR_MINIZIP_CFLAGS} ${Boost_CFLAGS} -DDOM_INCLUDE_LIBXML") +  + if( OPT_COLLADA15 ) +   add_subdirectory(src/1.5) +diff --git a/src/1.4/CMakeLists.txt b/src/1.4/CMakeLists.txt +index 17fbaea..a5f0b51 100644 +--- a/src/1.4/CMakeLists.txt ++++ b/src/1.4/CMakeLists.txt +@@ -1,10 +1,21 @@ + file(GLOB dom_files ${CMAKE_CURRENT_SOURCE_DIR}/dom/*.cpp) +-include_directories(${COLLADA14_INCLUDE_DIR}) +-add_library(collada14dom SHARED ${COLLADA_BASE_SOURCES} ${dom_files}) ++add_library(collada14dom STATIC ${COLLADA_BASE_SOURCES} ${dom_files}) ++target_include_directories(collada14dom PRIVATE ++	${colladadom_SOURCE_DIR}/include ++	${colladadom_SOURCE_DIR}/include/1.4 ++	${LIBXML2_INCLUDE_DIRS} ++	${MINIZIP_INCLUDE_DIRS} ++	${ZLIB_INCLUDE_DIRS} ++) ++target_link_directories(collada14dom INTERFACE ++	${LIBXML2_LIBRARY_DIRS} ++	${MINIZIP_LIBRARY_DIRS} ++	${ZLIB_LIBRARY_DIRS} ++) + target_link_libraries(collada14dom ${COLLADA_LIBS}) + set_target_properties(collada14dom PROPERTIES +   COMPILE_FLAGS "${COLLADA_COMPILE_FLAGS}" +   CLEAN_DIRECT_OUTPUT 1 +   SOVERSION ${COLLADA_DOM_SOVERSION} +   VERSION ${COLLADA_DOM_VERSION}) +-install(TARGETS collada14dom DESTINATION lib${LIB_SUFFIX}) ++install(TARGETS collada14dom DESTINATION ${COLLADA_DOM_LIBS_INSTALL_DIR}) +diff --git a/src/1.5/CMakeLists.txt b/src/1.5/CMakeLists.txt +index e061a01..fb73a70 100644 +--- a/src/1.5/CMakeLists.txt ++++ b/src/1.5/CMakeLists.txt +@@ -1,10 +1,10 @@ + file(GLOB dom_files ${CMAKE_CURRENT_SOURCE_DIR}/dom/*.cpp) + include_directories(${COLLADA15_INCLUDE_DIR}) +-add_library(collada15dom SHARED ${COLLADA_BASE_SOURCES} ${dom_files}) ++add_library(collada15dom STATIC ${COLLADA_BASE_SOURCES} ${dom_files}) + target_link_libraries(collada15dom ${COLLADA_LIBS}) + set_target_properties(collada15dom PROPERTIES +   COMPILE_FLAGS "${COLLADA_COMPILE_FLAGS}" +   CLEAN_DIRECT_OUTPUT 1 +   SOVERSION ${COLLADA_DOM_SOVERSION} +   VERSION ${COLLADA_DOM_VERSION}) +-install(TARGETS collada15dom DESTINATION lib${LIB_SUFFIX}) ++install(TARGETS collada15dom DESTINATION ${COLLADA_DOM_LIBS_INSTALL_DIR}) +diff --git a/src/dae/daeUtils.cpp b/src/dae/daeUtils.cpp +index 682692c..0e61ef1 100644 +--- a/src/dae/daeUtils.cpp ++++ b/src/dae/daeUtils.cpp +@@ -118,7 +118,7 @@ list<string> cdom::makeStringList(const char* s, ...) { + 	va_end(args); + 	return result; + } +-#endif 0 ++#endif // 0 +  + string cdom::getCurrentDir() { + #ifdef __CELLOS_LV2__ +@@ -154,7 +154,7 @@ char cdom::getFileSeparator() { + const string& cdom::getSystemTmpDir() { + #ifdef WIN32 +     static string tmpDir = string(getenv("TMP")) + getFileSeparator(); +-#elif defined(__linux__) || defined(__linux) ++#elif defined(__linux__) || defined(__linux) || defined(__FreeBSD__) +     static string tmpDir = "/tmp/"; + #elif defined __APPLE_CC__ + static string tmpDir = string(getenv("TMPDIR")); +@@ -173,7 +173,7 @@ string cdom::getRandomFileName() { +     std::string tmp(tmpnam(&tmpbuffer[0])); + #ifdef WIN32 +     randomSegment = tmp.substr(tmp.find_last_of('\\')+1); +-#elif defined(__linux__) || defined(__linux) ++#elif defined(__linux__) || defined(__linux) || defined(__FreeBSD__) +     randomSegment = tmp.substr(tmp.find_last_of('/')+1); + #elif defined __APPLE_CC__ + 	randomSegment = tmp.substr(tmp.find_last_of('/')+1); | 
