summaryrefslogtreecommitdiff
path: root/indra/cmake/LLPrimitive.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'indra/cmake/LLPrimitive.cmake')
-rw-r--r--indra/cmake/LLPrimitive.cmake147
1 files changed, 100 insertions, 47 deletions
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index 3429a744f5..09413c912d 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -18,49 +18,72 @@ if( USE_CONAN )
"${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" )
endif()
-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()
-elseif ( NOT WINDOWS )
+if (TRUE)
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 )
+ 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-r10.tar.gz)
file(DOWNLOAD
- https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r8.tar.gz
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz
+ https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r10.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10.tar.gz
)
- endif()
+ endif ()
file(ARCHIVE_EXTRACT
- INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz
+ INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10.tar.gz
DESTINATION ${CMAKE_BINARY_DIR}
)
- if ( WINDOWS )
+ if (WINDOWS OR CMAKE_COMMAND MATCHES /usr/bin/cmake)
execute_process(
- COMMAND sed -i "s/SHARED/STATIC/g" CMakeLists.txt
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4
+ COMMAND sed -i "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10
)
- set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_88)
else ()
execute_process(
- COMMAND sed -i "" -e "s/SHARED/STATIC/g" CMakeLists.txt
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4
+ COMMAND sed -i "" -e "s/include_directories/cmake_minimum_required(VERSION 3.28)\\ninclude_directories/" CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10
)
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)
+ 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-r10/src
+ )
+ else ()
+ execute_process(
+ COMMAND sed -i "" -e "s/SHARED/STATIC/" src/1.4/CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10
+ )
+ endif ()
+ if (DARWIN)
+ set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.88/include)
+ set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.88/lib)
set(BOOST_LIBRARY_SUFFIX -mt)
- endif()
+ 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_90)
+ else ()
+ set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_90)
+ endif ()
+ elseif (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ set(BOOST_CFLAGS -I/usr/local/include)
+ execute_process(
+ COMMAND sed -i "" -e "s/endif 0/endif/" dae/daeUtils.cpp
+ COMMAND sed -i "" -e "s/linux/FreeBSD/" dae/daeUtils.cpp
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10/src
+ )
+ 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
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10
TARGET collada14dom
CMAKE_FLAGS
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
@@ -78,49 +101,79 @@ elseif ( NOT WINDOWS )
-DOPT_COLLADA14:BOOL=ON
-DCOLLADA_DOM_INCLUDE_INSTALL_DIR:PATH=${LIBS_PREBUILT_DIR}/include/collada
)
- if( ${COLLADADOM_RESULT} )
+ if (WINDOWS)
+ execute_process(
+ COMMAND MSBuild.exe ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10/Project.sln -p:Configuration=${CMAKE_BUILD_TYPE}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10
+ OUTPUT_VARIABLE colladadom_installed
+ )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada)
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10/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-r10/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
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r10
OUTPUT_VARIABLE colladadom_installed
)
file(RENAME
${ARCH_PREBUILT_DIRS}/libcollada14dom.a
${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a
)
- file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}")
- endif()
- endif()
-endif()
+ endif ()
+ file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}")
+ endif ()
-#use_system_binary( colladadom )
+else (TRUE)
+
+use_system_binary( colladadom )
-if (WINDOWS)
use_prebuilt_binary(colladadom)
-endif ()
-if( FALSE )
use_prebuilt_binary(minizip-ng) # needed for colladadom
use_prebuilt_binary(libxml2)
-if (WINDOWS)
- target_link_libraries( ll::minizip-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/minizip.lib )
-else()
- target_link_libraries( ll::minizip-ng INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libminizip.a )
-endif()
+find_library(MINIZIPNG_LIBRARY
+ NAMES
+ minizip.lib
+ libminizip.a
+ PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
+
+target_link_libraries(ll::minizip-ng INTERFACE ${MINIZIPNG_LIBRARY})
+
+find_library(LIBXML2_LIBRARY
+ NAMES
+ libxml2.lib
+ libxml2.a
+ PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
+
+target_link_libraries(ll::libxml INTERFACE ${LIBXML2_LIBRARY})
if (WINDOWS)
- target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.lib Bcrypt.lib)
-else()
- target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.a)
+ target_link_libraries( ll::libxml INTERFACE Bcrypt.lib)
endif()
-endif( FALSE )
+
+endif (TRUE)
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 ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib ll::libxml ll::minizip-ng )
-else ()
- target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
-endif()
+
+find_library(COLLADADOM_LIBRARY
+ NAMES
+ libcollada14dom23-s.lib
+ collada14dom
+ PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
+
+target_link_libraries(ll::colladadom INTERFACE ${COLLADADOM_LIBRARY} ll::boost ll::libxml ll::minizip-ng)