From 0296812e889ac9bb0189cc9dadec4c2d0e78af83 Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Tue, 22 Jan 2013 20:51:35 +0100 Subject: [PATCH] Add cmake file for collada and glod. This fixes standalone when those libraries are installed elsewhere. Note that it "breaks" standalone if you just installed the prebuilt manually. For that to work you have to add /.../libraries/include to CMAKE_INCLUDE_PATH, which is not recommended because it would pick up any other prebuilt over your system installed libraries. Instead, for standalone, install the libraries somewhere with some prefix and then add that prefix to the environment variable CMAKE_PREFIX_PATH. For example, $prefix/include/collada and $prefix/lib/libcollada4dom.so --- indra/cmake/Colladadom.cmake | 45 ++++++++++++++++++++++++++++++++ indra/cmake/FindColladadom.cmake | 31 ++++++++++++++++++++++ indra/cmake/FindGLOD.cmake | 32 +++++++++++++++++++++++ indra/cmake/GLOD.cmake | 14 ++++++---- indra/cmake/LLPrimitive.cmake | 45 ++++++++++---------------------- indra/llprimitive/CMakeLists.txt | 4 +-- indra/newview/CMakeLists.txt | 4 +-- 7 files changed, 134 insertions(+), 41 deletions(-) create mode 100644 indra/cmake/Colladadom.cmake create mode 100644 indra/cmake/FindColladadom.cmake create mode 100644 indra/cmake/FindGLOD.cmake diff --git a/indra/cmake/Colladadom.cmake b/indra/cmake/Colladadom.cmake new file mode 100644 index 000000000..6c41cc7e9 --- /dev/null +++ b/indra/cmake/Colladadom.cmake @@ -0,0 +1,45 @@ +# -*- cmake -*- + +include(Prebuilt) + +set(COLLADADOM_FIND_QUIETLY OFF) +set(COLLADADOM_FIND_REQUIRED ON) + +if (STANDALONE) + include (FindColladadom) +else (STANDALONE) + use_prebuilt_binary(colladadom) + + if (NOT WINDOWS) + use_prebuilt_binary(pcre) + endif (NOT WINDOWS) + + if (NOT DARWIN AND NOT WINDOWS) + use_prebuilt_binary(libxml) + endif (NOT DARWIN AND NOT WINDOWS) + + set(COLLADADOM_INCLUDE_DIRS + ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada + ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada/1.4 + ) + + if (WINDOWS) + set(COLLADADOM_LIBRARIES + debug libcollada14dom22-d + optimized libcollada14dom22 + debug libboost_filesystem-mt-gd + optimized libboost_filesystem-mt + debug libboost_system-mt-gd + optimized libboost_system-mt + ) + else (WINDOWS) + set(COLLADADOM_LIBRARIES + collada14dom + minizip + xml2 + pcrecpp + pcre + ) + endif (WINDOWS) +endif (STANDALONE) + diff --git a/indra/cmake/FindColladadom.cmake b/indra/cmake/FindColladadom.cmake new file mode 100644 index 000000000..a7afb7c32 --- /dev/null +++ b/indra/cmake/FindColladadom.cmake @@ -0,0 +1,31 @@ +# -*- cmake -*- + +# - Find collada14dom +# Find the colladadom version 1.4 includes and library +# This module defines +# COLLADADOM_FOUND, System has libcollada14dom.so. +# COLLADADOM_INCLUDE_DIRS - The collada include directories. +# COLLADADOM_LIBRARIES - The libraries needed to use libcollada14dom. +# COLLADADOM_DEFINITIONS - Compiler switches required for using libcollada14dom. + +FIND_PACKAGE(PkgConfig) +PKG_CHECK_MODULES(PC_COLLADADOM collada) +SET(COLLADADOM_DEFINITIONS ${PC_COLLADADOM_CFLAGS_OTHER}) + +FIND_PATH(COLLADADOM_INCLUDE_DIR dae.h + HINTS ${PC_COLLADADOM_INCLUDE_DIR} ${PC_COLLADADOM_INCLUDE_DIRS} + PATH_SUFFIXES collada) + +FIND_LIBRARY(COLLADADOM_LIBRARY + NAMES libcollada14dom.so + HINTS ${PC_COLLADADOM_LIBDIR} ${PC_COLLADADOM_LIBRARY_DIRS} + PATHS /usr/lib /usr/local/lib) + +SET(COLLADADOM_LIBRARIES ${COLLADADOM_LIBRARY}) +SET(COLLADADOM_INCLUDE_DIRS ${COLLADADOM_INCLUDE_DIR} ${COLLADADOM_INCLUDE_DIR}/1.4) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(COLLADADOM DEFAULT_MSG + COLLADADOM_LIBRARY COLLADADOM_INCLUDE_DIR) + +MARK_AS_ADVANCED(COLLADADOM_LIBRARY COLLADADOM_INCLUDE_DIR) diff --git a/indra/cmake/FindGLOD.cmake b/indra/cmake/FindGLOD.cmake new file mode 100644 index 000000000..1ebc0ec95 --- /dev/null +++ b/indra/cmake/FindGLOD.cmake @@ -0,0 +1,32 @@ +# -*- cmake -*- + +# - Find GLOD +# Find the GLOD includes and library +# This module defines +# GLOD_FOUND, System has libglod.so. +# GLOD_INCLUDE_DIRS - The GLOD include directories. +# GLOD_LIBRARIES - The libraries needed to use libglod. +# GLOD_DEFINITIONS - Compiler switches required for using libglod. + +FIND_PACKAGE(PkgConfig) +PKG_CHECK_MODULES(PC_GLOD glod) +SET(GLOD_DEFINITIONS ${PC_GLOD_CFLAGS_OTHER}) + +FIND_PATH(GLOD_INCLUDE_DIR glod/glod.h + HINTS ${PC_GLOD_INCLUDE_DIR} ${PC_GLOD_INCLUDE_DIRS} + ) + +FIND_LIBRARY(GLOD_LIBRARY + NAMES libGLOD.so + HINTS ${PC_GLOD_LIBDIR} ${PC_GLOD_LIBRARY_DIRS} + PATHS /usr/lib /usr/local/lib) + +SET(GLOD_LIBRARIES ${GLOD_LIBRARY}) +SET(GLOD_INCLUDE_DIRS ${GLOD_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLOD DEFAULT_MSG + GLOD_LIBRARY GLOD_INCLUDE_DIR) + +MARK_AS_ADVANCED(GLOD_LIBRARY GLOD_INCLUDE_DIR) + diff --git a/indra/cmake/GLOD.cmake b/indra/cmake/GLOD.cmake index a9d37e862..e46a72c86 100644 --- a/indra/cmake/GLOD.cmake +++ b/indra/cmake/GLOD.cmake @@ -1,9 +1,13 @@ # -*- cmake -*- include(Prebuilt) -if (NOT STANDALONE) - use_prebuilt_binary(GLOD) -endif (NOT STANDALONE) +set(GLOD_FIND_QUIETLY OFF) +set(GLOD_FIND_REQUIRED ON) -set(GLOD_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) -set(GLOD_LIBRARIES glod) +if (STANDALONE) + include(FindGLOD) +else (STANDALONE) + use_prebuilt_binary(GLOD) + set(GLOD_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) + set(GLOD_LIBRARIES glod) +endif (STANDALONE) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index a49e0a802..dd1d806d5 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -1,39 +1,22 @@ # -*- cmake -*- -# these should be moved to their own cmake file -include(Prebuilt) -use_prebuilt_binary(colladadom) - -if (NOT WINDOWS) -use_prebuilt_binary(pcre) -endif (NOT WINDOWS) - -if (NOT DARWIN AND NOT WINDOWS) -use_prebuilt_binary(libxml) -endif (NOT DARWIN AND NOT WINDOWS) +include(Colladadom) set(LLPRIMITIVE_INCLUDE_DIRS - ${LIBS_OPEN_DIR}/llprimitive - ) + ${LIBS_OPEN_DIR}/llprimitive + ${COLLADADOM_INCLUDE_DIRS} + ) + if (WINDOWS) - set(LLPRIMITIVE_LIBRARIES - debug llprimitive - optimized llprimitive - debug libcollada14dom22-d - optimized libcollada14dom22 - debug libboost_filesystem-mt-gd - optimized libboost_filesystem-mt - debug libboost_system-mt-gd - optimized libboost_system-mt - ) + set(LLPRIMITIVE_LIBRARIES + debug llprimitive + optimized llprimitive + ${COLLADADOM_LIBRARIES} + ) else (WINDOWS) - set(LLPRIMITIVE_LIBRARIES - llprimitive - collada14dom - minizip - xml2 - pcrecpp - pcre - ) + set(LLPRIMITIVE_LIBRARIES + llprimitive + ${COLLADADOM_LIBRARIES} + ) endif (WINDOWS) diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt index 7c2416a8c..6aa771cfb 100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -8,6 +8,7 @@ include(LLMath) include(LLMessage) include(LLXML) include(LLPhysicsExtensions) +include(Colladadom) include_directories( ${LLCOMMON_INCLUDE_DIRS} @@ -15,8 +16,7 @@ include_directories( ${LLMESSAGE_INCLUDE_DIRS} ${LLXML_INCLUDE_DIRS} ${LLPHYSICSEXTENSIONS_INCLUDE_DIRS} - ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada - ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada/1.4 + ${COLLADADOM_INCLUDE_DIRS} ) set(llprimitive_SOURCE_FILES diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index a35fcda01..a5202b496 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -58,7 +58,7 @@ include_directories( ${HUNSPELL_INCLUDE_DIR} ${ELFIO_INCLUDE_DIR} ${JSONCPP_INCLUDE_DIRS} - ${GLOD_INCLUDE_DIR} + ${GLOD_INCLUDE_DIRS} ${LLAUDIO_INCLUDE_DIRS} ${LLCHARACTER_INCLUDE_DIRS} ${LLCOMMON_INCLUDE_DIRS} @@ -76,8 +76,6 @@ include_directories( ${LLXML_INCLUDE_DIRS} # ${LSCRIPT_INCLUDE_DIRS} # ${LSCRIPT_INCLUDE_DIRS}/lscript_compile - ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada - ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/collada/1.4 ) set(viewer_SOURCE_FILES