DRTVWR-489: Fix things up after a messy merge with main because of a gigantic CMake patch. Sadly, my macOS box updated to Xcode14.3 overnight and that caused many warnings/errors with variables being initialized and then used but not in a way that affected anything.. Building on Xcode 14.3 also requires that MACOSX_DEPLOYMENT_TARGET be set to > 10.13. Waiting on a decision about that but checking this in in the meantime. Builds on macOS with appropriate build variables set for MACOSX_DEPLOYMENT_TARGET = 10.14 but not really expecting this to build in TC because (REDACTED). Windows version probably hopelessly broken - switching to that now.

master
Callum Prentice 2023-04-03 14:58:58 -07:00
commit 28b240fd7f
256 changed files with 3366 additions and 4573 deletions

7
.gitignore vendored
View File

@ -20,11 +20,8 @@ indra/.distcc
build-vc80/ build-vc80/
build-vc100/ build-vc100/
build-vc120/ build-vc120/
build-vc120-32/ build-vc*-32/
build-vc120-64/ build-vc*-64/
build-vc150-32/
build-vc150-64/
build-vc160-64/
indra/CMakeFiles indra/CMakeFiles
indra/build-vc[0-9]* indra/build-vc[0-9]*
indra/lib/mono/1.0/*.dll indra/lib/mono/1.0/*.dll

View File

@ -307,6 +307,16 @@
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
</map> </map>
<key>linux64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>ac54672e0b38f52726f5c99047c913e4</string>
<key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2</string>
</map>
</map>
<key>windows</key> <key>windows</key>
<map> <map>
<key>archive</key> <key>archive</key>
@ -1050,9 +1060,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>dc09e870c8419979d748855c2d956711</string> <string>7f147ae0410f705f846b981498898392</string>
<key>url</key> <key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/109675/954163/icu4c-4.8.1-darwin64-577789.tar.bz2</string> <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/112850/977592/icu4c-4.8.1-darwin64-579264.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
@ -1109,6 +1119,16 @@
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
</map> </map>
<key>linux64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>e70898903475d8ac2e81ff33278fc987</string>
<key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2</string>
</map>
</map>
<key>windows</key> <key>windows</key>
<map> <map>
<key>archive</key> <key>archive</key>
@ -1695,9 +1715,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>da57838d80cf332f4a3026713a13f086</string> <string>e51c6f5dfd76eb148348a44ff57e66c2</string>
<key>url</key> <key>url</key>
<string>https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/90708/824484/llphysicsextensions_source-1.0.565754-darwin64-565754.tar.bz2</string> <string>https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/104810/918016/llphysicsextensions_source-1.0.575107-darwin64-575107.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
@ -1719,9 +1739,9 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>28ad884012aa0bb70cf4101853af2f9a</string> <string>dbbe4cc568ac149d862e421cdda4dd48</string>
<key>url</key> <key>url</key>
<string>https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/90733/824570/llphysicsextensions_source-1.0.565768-windows-565768.tar.bz2</string> <string>https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/104809/918011/llphysicsextensions_source-1.0.575107-windows-575107.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
@ -2588,6 +2608,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
</map> </map>
<key>linux64</key>
<map>
<key>archive</key>
<map>
<key>hash</key>
<string>46edf0f55417f8ef0d33a5c007bc3644</string>
<key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2</string>
</map>
</map>
<key>windows</key> <key>windows</key>
<map> <map>
<key>archive</key> <key>archive</key>
@ -2849,9 +2879,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>2e8d817e7837dd6f4284b13fa3f5c15e</string> <string>9e1b5515ab59b4e9cfeef6626d65d03d</string>
<key>url</key> <key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104765/917714/viewer_manager-3.0.575083-darwin64-575083.tar.bz2</string> <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/108609/945996/viewer_manager-3.0.577252-darwin64-577252.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
@ -2861,9 +2891,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>3efa80faaf537e39a77218cd6efa9409</string> <string>a3c599595ecc8fb987a5499fca42520a</string>
<key>url</key> <key>url</key>
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104766/917721/viewer_manager-3.0.575083-windows-575083.tar.bz2</string> <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/108610/946003/viewer_manager-3.0.577252-windows-577252.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
@ -2874,7 +2904,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>source_type</key> <key>source_type</key>
<string>hg</string> <string>hg</string>
<key>version</key> <key>version</key>
<string>3.0.575083</string> <string>3.0.577252</string>
</map> </map>
<key>vlc-bin</key> <key>vlc-bin</key>
<map> <map>
@ -3289,10 +3319,72 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>name</key> <key>name</key>
<string>darwin64</string> <string>darwin64</string>
</map> </map>
<key>linux64</key>
<map>
<key>build_directory</key>
<string>build-linux-x86_64</string>
<key>configurations</key>
<map>
<key>Release</key>
<map>
<key>build</key>
<map>
<key>command</key>
<string>ninja</string>
</map>
<key>configure</key>
<map>
<key>arguments</key>
<array>
<string>../indra</string>
</array>
<key>options</key>
<array>
<string>-G</string>
<string>Ninja</string>
<string>-DLL_TESTS=Off</string>
</array>
</map>
<key>default</key>
<string>True</string>
<key>name</key>
<string>Release</string>
</map>
<key>ReleaseOS</key>
<map>
<key>build</key>
<map>
<key>command</key>
<string>ninja</string>
</map>
<key>configure</key>
<map>
<key>options</key>
<array>
<string>-G</string>
<string>Ninja</string>
<string>-DLL_TESTS=Off</string>
</array>
</map>
<key>name</key>
<string>ReleaseOS</string>
</map>
<key>default</key>
<map>
<key>build</key>
<map>
</map>
<key>name</key>
<string>default</string>
</map>
</map>
<key>name</key>
<string>linux64</string>
</map>
<key>windows</key> <key>windows</key>
<map> <map>
<key>build_directory</key> <key>build_directory</key>
<string>build-vc${AUTOBUILD_VSVER|150}-$AUTOBUILD_ADDRSIZE</string> <string>build-vc${AUTOBUILD_VSVER|170}-$AUTOBUILD_ADDRSIZE</string>
<key>configurations</key> <key>configurations</key>
<map> <map>
<key>RelWithDebInfo</key> <key>RelWithDebInfo</key>
@ -3321,6 +3413,8 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<array> <array>
<string>-G</string> <string>-G</string>
<string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string> <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
<string>-A</string>
<string>${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
</array> </array>
</map> </map>
<key>default</key> <key>default</key>
@ -3359,9 +3453,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<array> <array>
<string>-G</string> <string>-G</string>
<string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string> <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
<string>-A</string>
<string>${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
<string>-DINSTALL_PROPRIETARY=FALSE</string> <string>-DINSTALL_PROPRIETARY=FALSE</string>
<string>-DUSE_KDU=FALSE</string> <string>-DUSE_KDU=FALSE</string>
<string>-DOPENAL:BOOL=ON</string> <string>-DUSE_OPENAL:BOOL=ON</string>
</array> </array>
</map> </map>
<key>name</key> <key>name</key>
@ -3393,6 +3489,8 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<array> <array>
<string>-G</string> <string>-G</string>
<string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string> <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
<string>-A</string>
<string>${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
</array> </array>
</map> </map>
<key>name</key> <key>name</key>
@ -3429,10 +3527,12 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<array> <array>
<string>-G</string> <string>-G</string>
<string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string> <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>
<string>-A</string>
<string>${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>
<string>-DUNATTENDED:BOOL=ON</string> <string>-DUNATTENDED:BOOL=ON</string>
<string>-DINSTALL_PROPRIETARY=FALSE</string> <string>-DINSTALL_PROPRIETARY=FALSE</string>
<string>-DUSE_KDU=FALSE</string> <string>-DUSE_KDU=FALSE</string>
<string>-DOPENAL:BOOL=ON</string> <string>-DUSE_OPENAL:BOOL=ON</string>
</array> </array>
</map> </map>
<key>name</key> <key>name</key>

View File

@ -1127,6 +1127,7 @@ Nicky Dasmijn
SL-14541 SL-14541
SL-16438 SL-16438
SL-17218 SL-17218
SL-17238
SL-17585 SL-17585
Nicky Perian Nicky Perian
OPEN-1 OPEN-1

View File

@ -4,22 +4,43 @@
# other commands to guarantee full compatibility # other commands to guarantee full compatibility
# with the version specified # with the version specified
## 3.8 added VS_DEBUGGER_WORKING_DIRECTORY support ## 3.8 added VS_DEBUGGER_WORKING_DIRECTORY support
cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR) ## 3.13/12 is needed for add_link_options/add_compile_definitions
## 3.14 added FILE CREATE_LINK
## 3.16 is needed for target_precompile_headers
## Nicky: Ideally we want at least 3.21 for good preset support
## We're not there yet, but once done, there is a kludge in Linking.cmake
# "if(${CMAKE_VERSION} VERSION_LESS "3.20.0")" that can also be removed
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
set(ROOT_PROJECT_NAME "SecondLife" CACHE STRING set(ROOT_PROJECT_NAME "SecondLife" CACHE STRING
"The root project/makefile/solution name. Defaults to SecondLife.") "The root project/makefile/solution name. Defaults to SecondLife.")
project(${ROOT_PROJECT_NAME}) project(${ROOT_PROJECT_NAME})
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_BINARY_DIR}")
include(conanbuildinfo OPTIONAL RESULT_VARIABLE USE_CONAN )
if( USE_CONAN )
set( USE_CONAN ON )
set( USE_AUTOBUILD_3P OFF )
conan_basic_setup(TARGETS NO_OUTPUT_DIRS)
add_compile_definitions(LL_USESYSTEMLIBS USE_CONAN NO_AUTOBUILD_3P)
else()
set( USE_CONAN OFF )
set( USE_AUTOBUILD_3P ON )
endif()
# The viewer code base can now be successfully compiled with -std=c++14. But
# turning that on in the generic viewer-build-variables/variables file would
# potentially require tweaking each of our ~50 third-party library builds.
# Until we decide to set -std=c++14 in viewer-build-variables/variables, set
# it locally here: we want to at least prevent inadvertently reintroducing
# viewer code that would fail with C++14.
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(Variables) include(Variables)
include(BuildVersion) include(BuildVersion)
set(LEGACY_STDIO_LIBS)
if (WINDOWS)
set(LEGACY_STDIO_LIBS legacy_stdio_definitions)
endif (WINDOWS)
if (NOT CMAKE_BUILD_TYPE) if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Build type. One of: Debug Release RelWithDebInfo" FORCE) "Build type. One of: Debug Release RelWithDebInfo" FORCE)
@ -59,8 +80,10 @@ add_subdirectory(${LIBS_OPEN_PREFIX}llplugin)
add_subdirectory(${LIBS_OPEN_PREFIX}llui) add_subdirectory(${LIBS_OPEN_PREFIX}llui)
add_subdirectory(${LIBS_OPEN_PREFIX}viewer_components) add_subdirectory(${LIBS_OPEN_PREFIX}viewer_components)
if( LL_TESTS )
# Legacy C++ tests. Build always, run if LL_TESTS is true. # Legacy C++ tests. Build always, run if LL_TESTS is true.
add_subdirectory(${VIEWER_PREFIX}test) add_subdirectory(${VIEWER_PREFIX}test)
endif()
if (ENABLE_MEDIA_PLUGINS) if (ENABLE_MEDIA_PLUGINS)
# viewer media plugins # viewer media plugins
@ -72,7 +95,6 @@ if (LINUX)
include(LLAppearanceUtility) include(LLAppearanceUtility)
add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR}) add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR})
endif (INSTALL_PROPRIETARY) endif (INSTALL_PROPRIETARY)
add_dependencies(viewer linux-crash-logger-strip-target)
elseif (WINDOWS) elseif (WINDOWS)
# cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake # cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake
if (EXISTS ${VIEWER_DIR}win_setup) if (EXISTS ${VIEWER_DIR}win_setup)
@ -87,12 +109,6 @@ if (WINDOWS)
endif (EXISTS ${VIEWER_DIR}win_setup) endif (EXISTS ${VIEWER_DIR}win_setup)
endif (WINDOWS) endif (WINDOWS)
# sets the 'startup project' for debugging from visual studio.
set_property(
DIRECTORY ${VIEWER_PREFIX}
PROPERTY VS_STARTUP_PROJECT secondlife-bin
)
if (USE_BUGSPLAT) if (USE_BUGSPLAT)
if (BUGSPLAT_DB) if (BUGSPLAT_DB)
message(STATUS "Building with BugSplat; database '${BUGSPLAT_DB}'") message(STATUS "Building with BugSplat; database '${BUGSPLAT_DB}'")
@ -108,6 +124,12 @@ add_dependencies(viewer secondlife-bin)
add_subdirectory(${VIEWER_PREFIX}doxygen EXCLUDE_FROM_ALL) add_subdirectory(${VIEWER_PREFIX}doxygen EXCLUDE_FROM_ALL)
# sets the 'startup project' for debugging from visual studio.
set_property(
DIRECTORY ${VIEWER_PREFIX}
PROPERTY VS_STARTUP_PROJECT ${VIEWER_BINARY_NAME}
)
if (LL_TESTS) if (LL_TESTS)
# Define after the custom targets are created so # Define after the custom targets are created so
# individual apps can add themselves as dependencies # individual apps can add themselves as dependencies

View File

@ -12,9 +12,7 @@
# Also realize that CMAKE_CXX_FLAGS may already be partially populated on # Also realize that CMAKE_CXX_FLAGS may already be partially populated on
# entry to this file. # entry to this file.
#***************************************************************************** #*****************************************************************************
include_guard()
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
include(Variables) include(Variables)
@ -27,25 +25,22 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{LL_BUILD}")
# as well? # as well?
# Portable compilation flags. # Portable compilation flags.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DADDRESS_SIZE=${ADDRESS_SIZE}") add_compile_definitions( ADDRESS_SIZE=${ADDRESS_SIZE})
# Configure crash reporting # Configure crash reporting
set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds") 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") set(NON_RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in developer builds")
if(RELEASE_CRASH_REPORTING) if(RELEASE_CRASH_REPORTING)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DLL_SEND_CRASH_REPORTS=1") add_compile_definitions( LL_SEND_CRASH_REPORTS=1)
endif() endif()
if(NON_RELEASE_CRASH_REPORTING) if(NON_RELEASE_CRASH_REPORTING)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLL_SEND_CRASH_REPORTS=1") add_compile_definitions( LL_SEND_CRASH_REPORTS=1)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DLL_SEND_CRASH_REPORTS=1")
endif() endif()
# Don't bother with MinSizeRel or Debug builds. # Don't bother with a MinSizeRel or Debug builds.
set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING "Supported build types." FORCE)
"Supported build types." FORCE)
# Platform-specific compilation flags. # Platform-specific compilation flags.
@ -66,32 +61,21 @@ if (WINDOWS)
# CP changed to only append the flag for 32bit builds - on 64bit builds, # CP changed to only append the flag for 32bit builds - on 64bit builds,
# locally at least, the build output is spammed with 1000s of 'D9002' # locally at least, the build output is spammed with 1000s of 'D9002'
# warnings about this switch being ignored. # warnings about this switch being ignored.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
if( ADDRESS_SIZE EQUAL 32 ) if( ADDRESS_SIZE EQUAL 32 )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /p:PreferredToolArchitecture=x64") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /p:PreferredToolArchitecture=x64")
endif() endif()
# Preserve first-pass-through versions (ie no FORCE overwrite). Prevents recursive addition of /Zo (04/2021)
set(OG_CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} CACHE STRING "OG_CXX_FLAGS_RELEASE")
set(OG_CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} CACHE STRING "OG_CXX_FLAGS_RELWITHDEBINFO")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"${OG_CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Zo"
CACHE STRING "C++ compiler release-with-debug options" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE
"${OG_CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /Zo"
CACHE STRING "C++ compiler release options" FORCE)
# zlib has assembly-language object files incompatible with SAFESEH # zlib has assembly-language object files incompatible with SAFESEH
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE /SAFESEH:NO /NODEFAULTLIB:LIBCMT /IGNORE:4099") add_link_options(/LARGEADDRESSAWARE
/SAFESEH:NO
set(CMAKE_CXX_STANDARD_LIBRARIES "") /NODEFAULTLIB:LIBCMT
set(CMAKE_C_STANDARD_LIBRARIES "") /IGNORE:4099)
add_definitions( add_definitions(
/DNOMINMAX -DNOMINMAX
# /DDOM_DYNAMIC # For shared library colladadom # /DDOM_DYNAMIC # For shared library colladadom
) )
add_compile_options( add_compile_options(
/Zo
/GS /GS
/TP /TP
/W3 /W3
@ -99,35 +83,50 @@ if (WINDOWS)
/Zc:forScope /Zc:forScope
/nologo /nologo
/Oy- /Oy-
# /arch:SSE2
/fp:fast /fp:fast
/MP
) )
# Nicky: x64 implies SSE2 # Nicky: x64 implies SSE2
if( ADDRESS_SIZE EQUAL 32 ) if( ADDRESS_SIZE EQUAL 32 )
add_definitions( /arch:SSE2 ) add_compile_options( /arch:SSE2 )
endif() endif()
# Are we using the crummy Visual Studio KDU build workaround? # Are we using the crummy Visual Studio KDU build workaround?
if (NOT VS_DISABLE_FATAL_WARNINGS) if (NOT VS_DISABLE_FATAL_WARNINGS)
add_definitions(/WX) add_compile_options(/WX)
endif (NOT VS_DISABLE_FATAL_WARNINGS) endif (NOT VS_DISABLE_FATAL_WARNINGS)
#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.*")
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}")
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
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()
endif (WINDOWS) endif (WINDOWS)
if (LINUX) if (LINUX)
set(CMAKE_SKIP_RPATH TRUE) set(CMAKE_SKIP_RPATH TRUE)
add_definitions(-D_FORTIFY_SOURCE=2) # EXTERNAL_TOS
# force this platform to accept TOS via external browser
set(CMAKE_CXX_FLAGS "-Wno-deprecated -Wno-unused-but-set-variable -Wno-unused-variable ${CMAKE_CXX_FLAGS}") # LL_IGNORE_SIGCHLD
# don't catch SIGCHLD in our base application class for the viewer - some of
# our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The
# viewer doesn't need to catch SIGCHLD anyway.
# gcc 4.3 and above don't like the LL boost and also add_compile_definitions(
# cause warnings due to our use of deprecated headers _REENTRANT
add_definitions(-Wno-parentheses) _FORTIFY_SOURCE=2
EXTERNAL_TOS
add_definitions( APPID=secondlife
-D_REENTRANT LL_IGNORE_SIGCHLD
) )
add_compile_options( add_compile_options(
-fexceptions -fexceptions
@ -137,27 +136,19 @@ if (LINUX)
-msse2 -msse2
-mfpmath=sse -mfpmath=sse
-pthread -pthread
-Wno-parentheses
-Wno-deprecated
-fvisibility=hidden
) )
# force this platform to accept TOS via external browser
add_definitions(-DEXTERNAL_TOS)
add_definitions(-DAPPID=secondlife)
add_compile_options(-fvisibility=hidden)
# don't catch SIGCHLD in our base application class for the viewer - some of
# our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The
# viewer doesn't need to catch SIGCHLD anyway.
add_definitions(-DLL_IGNORE_SIGCHLD)
if (ADDRESS_SIZE EQUAL 32) if (ADDRESS_SIZE EQUAL 32)
add_compile_options(-march=pentium4) add_compile_options(-march=pentium4)
endif (ADDRESS_SIZE EQUAL 32) endif (ADDRESS_SIZE EQUAL 32)
#add_compile_options(-ftree-vectorize) # THIS CRASHES GCC 3.1-3.2
if (NOT USESYSTEMLIBS)
# this stops us requiring a really recent glibc at runtime # this stops us requiring a really recent glibc at runtime
add_compile_options(-fno-stack-protector) add_compile_options(-fno-stack-protector)
# linking can be very memory-hungry, especially the final viewer link # linking can be very memory-hungry, especially the final viewer link
set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory") set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory")
endif (NOT USESYSTEMLIBS)
set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}") set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}")
endif (LINUX) endif (LINUX)
@ -173,13 +164,7 @@ if (DARWIN)
# see Variables.cmake. # see Variables.cmake.
string(REPLACE "-gdwarf-2" "-g${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}" string(REPLACE "-gdwarf-2" "-g${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}"
CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
# The viewer code base can now be successfully compiled with -std=c++14. But set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}")
# turning that on in the generic viewer-build-variables/variables file would
# potentially require tweaking each of our ~50 third-party library builds.
# Until we decide to set -std=c++14 in viewer-build-variables/variables, set
# it locally here: we want to at least prevent inadvertently reintroducing
# viewer code that would fail with C++14.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags} -std=c++14")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}")
# NOTE: it's critical that the optimization flag is put in front. # NOTE: it's critical that the optimization flag is put in front.
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered. # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
@ -188,47 +173,17 @@ if (DARWIN)
##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.") ##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")
endif (DARWIN) endif (DARWIN)
if (LINUX OR DARWIN) if (LINUX OR DARWIN)
if (CMAKE_CXX_COMPILER MATCHES ".*clang") set(GCC_WARNINGS -Wall -Wno-sign-compare -Wno-trigraphs)
set(CMAKE_COMPILER_IS_CLANGXX 1)
endif (CMAKE_CXX_COMPILER MATCHES ".*clang")
if (CMAKE_COMPILER_IS_GNUCXX)
set(GCC_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs")
elseif (CMAKE_COMPILER_IS_CLANGXX)
set(GCC_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs")
endif()
if (NOT GCC_DISABLE_FATAL_WARNINGS) if (NOT GCC_DISABLE_FATAL_WARNINGS)
set(GCC_WARNINGS "${GCC_WARNINGS} -Werror") list(APPEND GCC_WARNINGS -Werror)
endif (NOT GCC_DISABLE_FATAL_WARNINGS) endif (NOT GCC_DISABLE_FATAL_WARNINGS)
set(GCC_CXX_WARNINGS "${GCC_WARNINGS} -Wno-reorder -Wno-non-virtual-dtor") list(APPEND GCC_WARNINGS -Wno-reorder -Wno-non-virtual-dtor )
set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}") add_compile_options(${GCC_WARNINGS})
set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}") add_compile_options(-m${ADDRESS_SIZE})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m${ADDRESS_SIZE}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m${ADDRESS_SIZE}")
endif (LINUX OR DARWIN) endif (LINUX OR DARWIN)
if (USESYSTEMLIBS)
add_definitions(-DLL_USESYSTEMLIBS=1)
if (LINUX AND ADDRESS_SIZE EQUAL 32)
add_definitions(-march=pentiumpro)
endif (LINUX AND ADDRESS_SIZE EQUAL 32)
else (USESYSTEMLIBS)
set(${ARCH}_linux_INCLUDES
atk-1.0
glib-2.0
gstreamer-0.10
gtk-2.0
pango-1.0
)
endif (USESYSTEMLIBS)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)

View File

@ -1,33 +1,23 @@
include(Linking) include(Linking)
include(Prebuilt) include(Prebuilt)
set(APR_FIND_QUIETLY ON) include_guard()
set(APR_FIND_REQUIRED ON)
set(APRUTIL_FIND_QUIETLY ON) add_library( ll::apr INTERFACE IMPORTED )
set(APRUTIL_FIND_REQUIRED ON)
if (USESYSTEMLIBS) use_system_binary( apr apr-util )
include(FindAPR)
else (USESYSTEMLIBS)
use_prebuilt_binary(apr_suite) use_prebuilt_binary(apr_suite)
if (WINDOWS) if (WINDOWS)
if (LLCOMMON_LINK_SHARED) if (LLCOMMON_LINK_SHARED)
set(APR_selector "lib") set(APR_selector "lib")
else (LLCOMMON_LINK_SHARED) else (LLCOMMON_LINK_SHARED)
set(APR_selector "") set(APR_selector "")
endif (LLCOMMON_LINK_SHARED) endif (LLCOMMON_LINK_SHARED)
set(APR_LIBRARIES target_link_libraries( ll::apr INTERFACE
debug ${ARCH_PREBUILT_DIRS_DEBUG}/${APR_selector}apr-1.lib ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apr-1.lib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apr-1.lib ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apriconv-1.lib
) ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}aprutil-1.lib
set(APRICONV_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/${APR_selector}apriconv-1.lib
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apriconv-1.lib
)
set(APRUTIL_LIBRARIES
debug ${ARCH_PREBUILT_DIRS_DEBUG}/${APR_selector}aprutil-1.lib ${APRICONV_LIBRARIES}
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}aprutil-1.lib ${APRICONV_LIBRARIES}
) )
elseif (DARWIN) elseif (DARWIN)
if (LLCOMMON_LINK_SHARED) if (LLCOMMON_LINK_SHARED)
@ -37,18 +27,19 @@ else (USESYSTEMLIBS)
set(APR_selector "a") set(APR_selector "a")
set(APRUTIL_selector "a") set(APRUTIL_selector "a")
endif (LLCOMMON_LINK_SHARED) endif (LLCOMMON_LINK_SHARED)
set(APR_LIBRARIES libapr-1.${APR_selector})
set(APRUTIL_LIBRARIES libaprutil-1.${APRUTIL_selector})
set(APRICONV_LIBRARIES iconv)
else (WINDOWS)
set(APR_LIBRARIES apr-1)
set(APRUTIL_LIBRARIES aprutil-1)
set(APRICONV_LIBRARIES iconv)
endif (WINDOWS)
set(APR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/apr-1)
if (LINUX) target_link_libraries( ll::apr INTERFACE
list(APPEND APRUTIL_LIBRARIES uuid) libapr-1.${APR_selector}
list(APPEND APRUTIL_LIBRARIES rt) libaprutil-1.${APRUTIL_selector}
endif (LINUX) iconv
endif (USESYSTEMLIBS) )
else (WINDOWS)
target_link_libraries( ll::apr INTERFACE
apr-1
aprutil-1
iconv
uuid
rt
)
endif (WINDOWS)
target_include_directories( ll::apr SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/apr-1 )

View File

@ -1,5 +0,0 @@
# -*- cmake -*-
include(Prebuilt)
use_prebuilt_binary(libatmosphere)
set(LIBATMOSPHERE_LIBRARIES atmosphere)
set(LIBATMOSPHERE_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/atmosphere)

View File

@ -1,42 +1,16 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) include_guard()
include(FindPkgConfig) add_library( ll::vorbis INTERFACE IMPORTED )
pkg_check_modules(OGG REQUIRED ogg)
pkg_check_modules(VORBIS REQUIRED vorbis) use_system_binary(vorbis)
pkg_check_modules(VORBISENC REQUIRED vorbisenc)
pkg_check_modules(VORBISFILE REQUIRED vorbisfile)
else (USESYSTEMLIBS)
use_prebuilt_binary(ogg_vorbis) use_prebuilt_binary(ogg_vorbis)
set(VORBIS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
set(VORBISENC_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
set(VORBISFILE_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS})
if (WINDOWS) if (WINDOWS)
set(OGG_LIBRARIES target_link_libraries(ll::vorbis INTERFACE ogg_static vorbis_static vorbisenc_static vorbisfile_static )
optimized ogg_static
debug ogg_static_d)
set(VORBIS_LIBRARIES
optimized vorbis_static
debug vorbis_static_d)
set(VORBISENC_LIBRARIES
optimized vorbisenc_static
debug vorbisenc_static_d)
set(VORBISFILE_LIBRARIES
optimized vorbisfile_static
debug vorbisfile_static_d)
else (WINDOWS) else (WINDOWS)
set(OGG_LIBRARIES ogg) target_link_libraries(ll::vorbis INTERFACE ogg vorbis vorbisenc vorbisfile )
set(VORBIS_LIBRARIES vorbis)
set(VORBISENC_LIBRARIES vorbisenc)
set(VORBISFILE_LIBRARIES vorbisfile)
endif (WINDOWS) endif (WINDOWS)
endif (USESYSTEMLIBS)
link_directories(
${VORBIS_LIBRARY_DIRS}
${VORBISENC_LIBRARY_DIRS}
${VORBISFILE_LIBRARY_DIRS}
${OGG_LIBRARY_DIRS}
)

View File

@ -1,105 +1,50 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(Boost_FIND_QUIETLY ON) include_guard()
set(Boost_FIND_REQUIRED ON)
if (USESYSTEMLIBS) add_library( ll::boost INTERFACE IMPORTED )
include(FindBoost) 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()
endif()
set(BOOST_CONTEXT_LIBRARY boost_context-mt)
set(BOOST_FIBER_LIBRARY boost_fiber-mt)
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
set(BOOST_REGEX_LIBRARY boost_regex-mt)
set(BOOST_SIGNALS_LIBRARY boost_signals-mt)
set(BOOST_SYSTEM_LIBRARY boost_system-mt)
set(BOOST_THREAD_LIBRARY boost_thread-mt)
else (USESYSTEMLIBS)
use_prebuilt_binary(boost) use_prebuilt_binary(boost)
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
# As of sometime between Boost 1.67 and 1.72, Boost libraries are suffixed # As of sometime between Boost 1.67 and 1.72, Boost libraries are suffixed
# with the address size. # with the address size.
set(addrsfx "-x${ADDRESS_SIZE}") set(addrsfx "-x${ADDRESS_SIZE}")
if (WINDOWS) if (WINDOWS)
set(BOOST_CONTEXT_LIBRARY target_link_libraries( ll::boost INTERFACE
optimized libboost_context-mt${addrsfx} libboost_context-mt${addrsfx}
debug libboost_context-mt${addrsfx}-gd) libboost_fiber-mt${addrsfx}
set(BOOST_FIBER_LIBRARY libboost_filesystem-mt${addrsfx}
optimized libboost_fiber-mt${addrsfx} libboost_program_options-mt${addrsfx}
debug libboost_fiber-mt${addrsfx}-gd) libboost_regex-mt${addrsfx}
set(BOOST_FILESYSTEM_LIBRARY libboost_system-mt${addrsfx}
optimized libboost_filesystem-mt${addrsfx} libboost_thread-mt${addrsfx})
debug libboost_filesystem-mt${addrsfx}-gd)
set(BOOST_PROGRAM_OPTIONS_LIBRARY
optimized libboost_program_options-mt${addrsfx}
debug libboost_program_options-mt${addrsfx}-gd)
set(BOOST_REGEX_LIBRARY
optimized libboost_regex-mt${addrsfx}
debug libboost_regex-mt${addrsfx}-gd)
set(BOOST_SIGNALS_LIBRARY
optimized libboost_signals-mt${addrsfx}
debug libboost_signals-mt${addrsfx}-gd)
set(BOOST_SYSTEM_LIBRARY
optimized libboost_system-mt${addrsfx}
debug libboost_system-mt${addrsfx}-gd)
set(BOOST_THREAD_LIBRARY
optimized libboost_thread-mt${addrsfx}
debug libboost_thread-mt${addrsfx}-gd)
elseif (LINUX) elseif (LINUX)
set(BOOST_CONTEXT_LIBRARY target_link_libraries( ll::boost INTERFACE
optimized boost_context-mt${addrsfx} boost_context-mt${addrsfx}
debug boost_context-mt${addrsfx}-d) boost_fiber-mt${addrsfx}
set(BOOST_FIBER_LIBRARY boost_filesystem-mt${addrsfx}
optimized boost_fiber-mt${addrsfx} boost_program_options-mt${addrsfx}
debug boost_fiber-mt${addrsfx}-d) boost_regex-mt${addrsfx}
set(BOOST_FILESYSTEM_LIBRARY boost_signals-mt${addrsfx}
optimized boost_filesystem-mt${addrsfx} boost_system-mt${addrsfx}
debug boost_filesystem-mt${addrsfx}-d) boost_thread-mt${addrsfx})
set(BOOST_PROGRAM_OPTIONS_LIBRARY
optimized boost_program_options-mt${addrsfx}
debug boost_program_options-mt${addrsfx}-d)
set(BOOST_REGEX_LIBRARY
optimized boost_regex-mt${addrsfx}
debug boost_regex-mt${addrsfx}-d)
set(BOOST_SIGNALS_LIBRARY
optimized boost_signals-mt${addrsfx}
debug boost_signals-mt${addrsfx}-d)
set(BOOST_SYSTEM_LIBRARY
optimized boost_system-mt${addrsfx}
debug boost_system-mt${addrsfx}-d)
set(BOOST_THREAD_LIBRARY
optimized boost_thread-mt${addrsfx}
debug boost_thread-mt${addrsfx}-d)
elseif (DARWIN) elseif (DARWIN)
set(BOOST_CONTEXT_LIBRARY target_link_libraries( ll::boost INTERFACE
optimized boost_context-mt${addrsfx} boost_context-mt${addrsfx}
debug boost_context-mt${addrsfx}) boost_fiber-mt${addrsfx}
set(BOOST_FIBER_LIBRARY boost_filesystem-mt${addrsfx}
optimized boost_fiber-mt${addrsfx} boost_program_options-mt${addrsfx}
debug boost_fiber-mt${addrsfx}) boost_regex-mt${addrsfx}
set(BOOST_FILESYSTEM_LIBRARY boost_system-mt${addrsfx}
optimized boost_filesystem-mt${addrsfx} boost_thread-mt${addrsfx})
debug boost_filesystem-mt${addrsfx})
set(BOOST_PROGRAM_OPTIONS_LIBRARY
optimized boost_program_options-mt${addrsfx}
debug boost_program_options-mt${addrsfx})
set(BOOST_REGEX_LIBRARY
optimized boost_regex-mt${addrsfx}
debug boost_regex-mt${addrsfx})
set(BOOST_SIGNALS_LIBRARY
optimized boost_signals-mt${addrsfx}
debug boost_signals-mt${addrsfx})
set(BOOST_SYSTEM_LIBRARY
optimized boost_system-mt${addrsfx}
debug boost_system-mt${addrsfx})
set(BOOST_THREAD_LIBRARY
optimized boost_thread-mt${addrsfx}
debug boost_thread-mt${addrsfx})
endif (WINDOWS) endif (WINDOWS)
endif (USESYSTEMLIBS)
if (LINUX) if (LINUX)
set(BOOST_SYSTEM_LIBRARY ${BOOST_SYSTEM_LIBRARY} rt) set(BOOST_SYSTEM_LIBRARY ${BOOST_SYSTEM_LIBRARY} rt)

View File

@ -16,5 +16,5 @@ add_custom_command(OUTPUT packages-info.txt
COMMAND ${PYTHON_EXECUTABLE} COMMAND ${PYTHON_EXECUTABLE}
${CMAKE_SOURCE_DIR}/cmake/run_build_test.py -DAUTOBUILD_ADDRSIZE=${ADDRESS_SIZE} -DAUTOBUILD=${AUTOBUILD_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/run_build_test.py -DAUTOBUILD_ADDRSIZE=${ADDRESS_SIZE} -DAUTOBUILD=${AUTOBUILD_EXECUTABLE}
${PYTHON_EXECUTABLE} ${PYTHON_EXECUTABLE}
${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > packages-info.txt ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" "${AUTOBUILD_INSTALL_DIR}" > packages-info.txt
) )

View File

@ -19,33 +19,23 @@ if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/n
message(STATUS "Revision (from autobuild environment): ${VIEWER_VERSION_REVISION}") message(STATUS "Revision (from autobuild environment): ${VIEWER_VERSION_REVISION}")
else (DEFINED ENV{revision}) else (DEFINED ENV{revision})
find_program(MERCURIAL find_program(GIT git)
NAMES hg if (DEFINED GIT )
PATHS [HKEY_LOCAL_MACHINE\\Software\\TortoiseHG] execute_process(
PATH_SUFFIXES Mercurial) COMMAND ${GIT} rev-list --count HEAD
mark_as_advanced(MERCURIAL)
if (MERCURIAL)
execute_process(COMMAND ${MERCURIAL} identify --num --rev tip
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE hg_id_result
ERROR_VARIABLE hg_id_error
OUTPUT_VARIABLE VIEWER_VERSION_REVISION OUTPUT_VARIABLE VIEWER_VERSION_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE
if (NOT ${hg_id_result} EQUAL 0) )
message(SEND_ERROR "Revision number generation failed with output:\n${hg_id_error}")
else (NOT ${hg_id_result} EQUAL 0)
string(REGEX REPLACE "[^0-9a-f]" "" VIEWER_VERSION_REVISION ${VIEWER_VERSION_REVISION})
endif (NOT ${hg_id_result} EQUAL 0)
if ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$") if ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
message(STATUS "Revision (from hg) ${VIEWER_VERSION_REVISION}") message(STATUS "Revision (from git) ${VIEWER_VERSION_REVISION}")
else ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$") else ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
message(STATUS "Revision not set (repository not found?); using 0") message(STATUS "Revision not set (repository not found?); using 0")
set(VIEWER_VERSION_REVISION 0 ) set(VIEWER_VERSION_REVISION 0 )
endif ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$") endif ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
else (MERCURIAL) else (DEFINED GIT )
message(STATUS "Revision not set: mercurial not found; using 0") message(STATUS "Revision not set: 'git' found; using 0")
set(VIEWER_VERSION_REVISION 0) set(VIEWER_VERSION_REVISION 0)
endif (MERCURIAL) endif (DEFINED GIT)
endif (DEFINED ENV{revision}) endif (DEFINED ENV{revision})
message(STATUS "Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}") message(STATUS "Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
else ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) else ( EXISTS ${VIEWER_VERSION_BASE_FILE} )

View File

@ -2,18 +2,14 @@
include(Linking) include(Linking)
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) include_guard()
set(CEFPLUGIN OFF CACHE BOOL add_library( ll::cef INTERFACE IMPORTED )
"CEFPLUGIN support for the llplugin/llmedia test apps.")
else (USESYSTEMLIBS)
use_prebuilt_binary(dullahan) use_prebuilt_binary(dullahan)
set(CEFPLUGIN ON CACHE BOOL target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/cef)
"CEFPLUGIN support for the llplugin/llmedia test apps.")
set(CEF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/cef)
endif (USESYSTEMLIBS)
if (WINDOWS) if (WINDOWS)
set(CEF_PLUGIN_LIBRARIES target_link_libraries( ll::cef INTERFACE
libcef.lib libcef.lib
libcef_dll_wrapper.lib libcef_dll_wrapper.lib
dullahan.lib dullahan.lib
@ -29,7 +25,7 @@ elseif (DARWIN)
message(FATAL_ERROR "CEF not found") message(FATAL_ERROR "CEF not found")
endif() endif()
set(CEF_PLUGIN_LIBRARIES target_link_libraries( ll::cef INTERFACE
${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a ${ARCH_PREBUILT_DIRS_RELEASE}/libcef_dll_wrapper.a
${ARCH_PREBUILT_DIRS_RELEASE}/libdullahan.a ${ARCH_PREBUILT_DIRS_RELEASE}/libdullahan.a
${APPKIT_LIBRARY} ${APPKIT_LIBRARY}

View File

@ -6,7 +6,6 @@ project(cmake)
set(cmake_SOURCE_FILES set(cmake_SOURCE_FILES
CMakeLists.txt CMakeLists.txt
00-Common.cmake 00-Common.cmake
APR.cmake APR.cmake
Audio.cmake Audio.cmake
@ -23,56 +22,28 @@ set(cmake_SOURCE_FILES
DeploySharedLibs.cmake DeploySharedLibs.cmake
DragDrop.cmake DragDrop.cmake
EXPAT.cmake EXPAT.cmake
FindAPR.cmake
FindAutobuild.cmake FindAutobuild.cmake
FindGLH.cmake
FindHUNSPELL.cmake
FindICU4C.cmake
FindJsonCpp.cmake
FindNDOF.cmake
FindOpenJPEG.cmake
FindSCP.cmake
FindURIPARSER.cmake
FindXmlRpcEpi.cmake
FindZLIBNG.cmake
FMODSTUDIO.cmake FMODSTUDIO.cmake
FreeType.cmake FreeType.cmake
GLEXT.cmake GLEXT.cmake
GLH.cmake GLH.cmake
## GStreamer010Plugin.cmake
GoogleMock.cmake GoogleMock.cmake
Havok.cmake Havok.cmake
Hunspell.cmake Hunspell.cmake
ICU4C.cmake
JPEG.cmake
JsonCpp.cmake JsonCpp.cmake
LLAddBuildTest.cmake LLAddBuildTest.cmake
LLAppearance.cmake LLAppearance.cmake
LLAudio.cmake LLAudio.cmake
LLCharacter.cmake
LLCommon.cmake LLCommon.cmake
LLCrashLogger.cmake
LLImage.cmake LLImage.cmake
LLImageJ2COJ.cmake
LLInventory.cmake
LLKDU.cmake LLKDU.cmake
LLLogin.cmake
LLMath.cmake
LLMeshOptimizer.cmake
LLMessage.cmake
LLPhysicsExtensions.cmake LLPhysicsExtensions.cmake
LLPlugin.cmake
LLPrimitive.cmake LLPrimitive.cmake
LLRender.cmake
LLSharedLibs.cmake LLSharedLibs.cmake
LLTestCommand.cmake LLTestCommand.cmake
LLUI.cmake
LLFileSystem.cmake
LLWindow.cmake LLWindow.cmake
LLXML.cmake
Linking.cmake Linking.cmake
MediaPluginBase.cmake Meshoptimizer.cmake
MESHOPTIMIZER.cmake
NDOF.cmake NDOF.cmake
OPENAL.cmake OPENAL.cmake
OpenGL.cmake OpenGL.cmake
@ -104,9 +75,6 @@ set(master_SOURCE_FILES
source_group("Master Rules" FILES ${master_SOURCE_FILES}) source_group("Master Rules" FILES ${master_SOURCE_FILES})
set_source_files_properties(${cmake_SOURCE_FILES} ${master_SOURCE_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
add_library(cmake add_library(cmake
cmake_dummy.cpp cmake_dummy.cpp
${cmake_SOURCE_FILES} ${cmake_SOURCE_FILES}

View File

@ -1,19 +1,14 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(CURL_FIND_QUIETLY ON) include_guard()
set(CURL_FIND_REQUIRED ON) add_library( ll::libcurl INTERFACE IMPORTED )
if (USESYSTEMLIBS) use_system_binary(libcurl)
include(FindCURL)
else (USESYSTEMLIBS)
use_prebuilt_binary(curl) use_prebuilt_binary(curl)
if (WINDOWS) if (WINDOWS)
set(CURL_LIBRARIES target_link_libraries(ll::libcurl INTERFACE libcurl.lib)
debug libcurld.lib
optimized libcurl.lib)
else (WINDOWS) else (WINDOWS)
set(CURL_LIBRARIES libcurl.a) target_link_libraries(ll::libcurl INTERFACE libcurl.a)
endif (WINDOWS) endif (WINDOWS)
set(CURL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) target_include_directories( ll::libcurl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
endif (USESYSTEMLIBS)

View File

@ -6,6 +6,8 @@
include(CMakeCopyIfDifferent) include(CMakeCopyIfDifferent)
include(Linking) include(Linking)
include(OPENAL)
include(FMODSTUDIO)
# When we copy our dependent libraries, we almost always want to copy them to # When we copy our dependent libraries, we almost always want to copy them to
# both the Release and the RelWithDebInfo staging directories. This has # both the Release and the RelWithDebInfo staging directories. This has
@ -13,27 +15,27 @@ include(Linking)
# copy_if_different commands. Encapsulate that usage. # copy_if_different commands. Encapsulate that usage.
# Pass FROM_DIR, TARGETS and the files to copy. TO_DIR is implicit. # Pass FROM_DIR, TARGETS and the files to copy. TO_DIR is implicit.
# to_staging_dirs diverges from copy_if_different in that it appends to TARGETS. # to_staging_dirs diverges from copy_if_different in that it appends to TARGETS.
MACRO(to_staging_dirs from_dir targets) macro(to_staging_dirs from_dir targets)
foreach(staging_dir set( targetDir "${SHARED_LIB_STAGING_DIR}")
"${SHARED_LIB_STAGING_DIR_RELEASE}" copy_if_different("${from_dir}" "${targetDir}" out_targets ${ARGN})
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}")
copy_if_different("${from_dir}" "${staging_dir}" out_targets ${ARGN})
list(APPEND "${targets}" "${out_targets}") list(APPEND "${targets}" "${out_targets}")
endforeach() endmacro()
ENDMACRO(to_staging_dirs from_dir to_dir targets)
################################################################### ###################################################################
# set up platform specific lists of files that need to be copied # set up platform specific lists of files that need to be copied
################################################################### ###################################################################
if(WINDOWS) if(WINDOWS)
set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug")
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo")
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}/Release")
#******************************* #*******************************
# VIVOX - *NOTE: no debug version # VIVOX - *NOTE: no debug version
set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
# ND, it seems there is no such thing defined. At least when building a viewer
# Does this maybe matter on some LL buildserver? Otherwise this and the snippet using slvoice_src_dir
# can all go
if( ARCH_PREBUILT_BIN_RELEASE )
set(slvoice_src_dir "${ARCH_PREBUILT_BIN_RELEASE}") set(slvoice_src_dir "${ARCH_PREBUILT_BIN_RELEASE}")
endif()
set(slvoice_files SLVoice.exe ) set(slvoice_files SLVoice.exe )
if (ADDRESS_SIZE EQUAL 64) if (ADDRESS_SIZE EQUAL 64)
list(APPEND vivox_libs list(APPEND vivox_libs
@ -93,14 +95,14 @@ if(WINDOWS)
endif(ADDRESS_SIZE EQUAL 32) endif(ADDRESS_SIZE EQUAL 32)
endif (USE_BUGSPLAT) endif (USE_BUGSPLAT)
if (FMODSTUDIO) if (TARGET ll::fmodstudio)
set(debug_files ${debug_files} fmodL.dll) set(debug_files ${debug_files} fmodL.dll)
set(release_files ${release_files} fmod.dll) set(release_files ${release_files} fmod.dll)
endif (FMODSTUDIO) endif ()
if (OPENAL) if (TARGET ll::openal)
list(APPEND release_files openal32.dll alut.dll) list(APPEND release_files openal32.dll alut.dll)
endif (OPENAL) endif ()
#******************************* #*******************************
# Copy MS C runtime dlls, required for packaging. # Copy MS C runtime dlls, required for packaging.
@ -114,6 +116,8 @@ if(WINDOWS)
set(MSVC_VER 140) set(MSVC_VER 140)
elseif (MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1930) # Visual Studio 2019 elseif (MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1930) # Visual Studio 2019
set(MSVC_VER 140) set(MSVC_VER 140)
elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1940) # Visual Studio 2022
set(MSVC_VER 140)
else (MSVC80) else (MSVC80)
MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake") MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")
endif (MSVC80) endif (MSVC80)
@ -157,10 +161,6 @@ if(WINDOWS)
endforeach() endforeach()
elseif(DARWIN) elseif(DARWIN)
set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug/Resources")
set(SHARED_LIB_STAGING_DIR_RELWITHDEBINFO "${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/Resources")
set(SHARED_LIB_STAGING_DIR_RELEASE "${SHARED_LIB_STAGING_DIR}/Release/Resources")
set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
set(slvoice_files SLVoice) set(slvoice_files SLVoice)
set(vivox_libs set(vivox_libs
@ -187,10 +187,10 @@ elseif(DARWIN)
liburiparser.1.0.27.dylib liburiparser.1.0.27.dylib
) )
if (FMODSTUDIO) if (TARGET ll::fmodstudio)
set(debug_files ${debug_files} libfmodL.dylib) set(debug_files ${debug_files} libfmodL.dylib)
set(release_files ${release_files} libfmod.dylib) set(release_files ${release_files} libfmod.dylib)
endif (FMODSTUDIO) endif ()
elseif(LINUX) elseif(LINUX)
# linux is weird, multiple side by side configurations aren't supported # linux is weird, multiple side by side configurations aren't supported
@ -218,28 +218,30 @@ elseif(LINUX)
set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")
# *FIX - figure out what to do with duplicate libalut.so here -brad # *FIX - figure out what to do with duplicate libalut.so here -brad
set(release_files set(release_files
${EXPAT_COPY}
)
if( USE_AUTOBUILD_3P )
list( APPEND release_files
libapr-1.so.0 libapr-1.so.0
libaprutil-1.so.0 libaprutil-1.so.0
libatk-1.0.so libatk-1.0.so
libdb-5.1.so
${EXPAT_COPY}
libfreetype.so.6.6.2 libfreetype.so.6.6.2
libfreetype.so.6 libfreetype.so.6
libgmodule-2.0.so
libgobject-2.0.so
libhunspell-1.3.so.0.0.0 libhunspell-1.3.so.0.0.0
libopenal.so
libopenjp2.so
libuuid.so.16 libuuid.so.16
libuuid.so.16.0.22 libuuid.so.16.0.22
libfontconfig.so.1.8.0 libfontconfig.so.1.8.0
libfontconfig.so.1 libfontconfig.so.1
libgmodule-2.0.so
libgobject-2.0.so
) )
endif()
if (FMODSTUDIO) if (TARGET ll::fmodstudio)
set(debug_files ${debug_files} "libfmodL.so") set(debug_files ${debug_files} "libfmodL.so")
set(release_files ${release_files} "libfmod.so") set(release_files ${release_files} "libfmod.so")
endif (FMODSTUDIO) endif ()
else(WINDOWS) else(WINDOWS)
message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...") message(STATUS "WARNING: unrecognized platform for staging 3rd party libs, skipping...")
@ -269,6 +271,8 @@ endif(WINDOWS)
# Curiously, slvoice_files are only copied to SHARED_LIB_STAGING_DIR_RELEASE. # Curiously, slvoice_files are only copied to SHARED_LIB_STAGING_DIR_RELEASE.
# It's unclear whether this is oversight or intentional, but anyway leave the # It's unclear whether this is oversight or intentional, but anyway leave the
# single copy_if_different command rather than using to_staging_dirs. # single copy_if_different command rather than using to_staging_dirs.
if( slvoice_src_dir )
copy_if_different( copy_if_different(
${slvoice_src_dir} ${slvoice_src_dir}
"${SHARED_LIB_STAGING_DIR_RELEASE}" "${SHARED_LIB_STAGING_DIR_RELEASE}"
@ -276,6 +280,7 @@ copy_if_different(
${slvoice_files} ${slvoice_files}
) )
list(APPEND third_party_targets ${out_targets}) list(APPEND third_party_targets ${out_targets})
endif()
to_staging_dirs( to_staging_dirs(
${vivox_lib_dir} ${vivox_lib_dir}
@ -289,9 +294,16 @@ to_staging_dirs(
${release_files} ${release_files}
) )
if(NOT USESYSTEMLIBS)
add_custom_target( add_custom_target(
stage_third_party_libs ALL stage_third_party_libs ALL
DEPENDS ${third_party_targets} DEPENDS ${third_party_targets}
) )
endif(NOT USESYSTEMLIBS)
if(DARWIN)
# Support our "@executable_path/../Resources" load path for executables
# that end up in any of the above SHARED_LIB_STAGING_DIR_MUMBLE
# directories.
add_custom_command( TARGET stage_third_party_libs POST_BUILD
COMMAND cmake -E create_symlink ${SHARED_LIB_STAGING_DIR} ${CMAKE_BINARY_DIR}/sharedlibs/Resources
)
endif()

View File

@ -1,29 +1,14 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) add_library( ll::dbus INTERFACE IMPORTED)
include(FindPkgConfig)
pkg_check_modules(DBUSGLIB REQUIRED dbus-glib-1) if( LINUX )
# Only define this when not using the prebuild 3ps, lls prebuild is broken
if( NOT USE_AUTOBUILD_3P )
target_compile_definitions( ll::dbus INTERFACE LL_DBUS_ENABLED )
endif()
use_system_binary(dbus)
elseif (LINUX)
use_prebuilt_binary(dbus_glib) use_prebuilt_binary(dbus_glib)
set(DBUSGLIB_FOUND ON FORCE BOOL) endif()
set(DBUSGLIB_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include/dbus
)
# We don't need to explicitly link against dbus-glib itself, because
# the viewer probes for the system's copy at runtime.
set(DBUSGLIB_LIBRARIES
gobject-2.0
glib-2.0
)
endif (USESYSTEMLIBS)
if (DBUSGLIB_FOUND)
set(DBUSGLIB ON CACHE BOOL "Build with dbus-glib message bus support.")
endif (DBUSGLIB_FOUND)
if (DBUSGLIB)
add_definitions(-DLL_DBUS_ENABLED=1)
endif (DBUSGLIB)

View File

@ -3,18 +3,14 @@
set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off") set(OS_DRAG_DROP ON CACHE BOOL "Build the viewer with OS level drag and drop turned on or off")
if (OS_DRAG_DROP) if (OS_DRAG_DROP)
if (WINDOWS) if (WINDOWS)
add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
endif (WINDOWS) endif (WINDOWS)
if (DARWIN) if (DARWIN)
add_definitions(-DLL_OS_DRAGDROP_ENABLED=1) add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
endif (DARWIN) endif (DARWIN)
if (LINUX) if (LINUX)
add_definitions(-DLL_OS_DRAGDROP_ENABLED=0) add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
endif (LINUX) endif (LINUX)
endif (OS_DRAG_DROP) endif (OS_DRAG_DROP)

View File

@ -1,23 +1,20 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(EXPAT_FIND_QUIETLY ON) include_guard()
set(EXPAT_FIND_REQUIRED ON) add_library( ll::expat INTERFACE IMPORTED )
if (USESYSTEMLIBS) use_system_binary(expat)
include(FindEXPAT)
else (USESYSTEMLIBS)
use_prebuilt_binary(expat) use_prebuilt_binary(expat)
if (WINDOWS) if (WINDOWS)
set(EXPAT_LIBRARIES libexpatMT) target_link_libraries( ll::expat INTERFACE libexpatMT )
set(EXPAT_COPY libexpatMT.dll) set(EXPAT_COPY libexpatMT.dll)
else (WINDOWS) else (WINDOWS)
set(EXPAT_LIBRARIES expat) target_link_libraries( ll::expat INTERFACE expat )
if (DARWIN) if (DARWIN)
set(EXPAT_COPY libexpat.1.dylib libexpat.dylib) set(EXPAT_COPY libexpat.1.dylib libexpat.dylib)
else () else ()
set(EXPAT_COPY libexpat.so.1 libexpat.so) set(EXPAT_COPY libexpat.so.1 libexpat.so)
endif () endif ()
endif (WINDOWS) endif (WINDOWS)
set(EXPAT_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) target_include_directories( ll::expat SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
endif (USESYSTEMLIBS)

View File

@ -2,15 +2,5 @@
include(Linking) include(Linking)
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS)
set(EXAMPLEPLUGIN OFF CACHE BOOL
"EXAMPLEPLUGIN support for the llplugin/llmedia test apps.")
else (USESYSTEMLIBS)
set(EXAMPLEPLUGIN ON CACHE BOOL set(EXAMPLEPLUGIN ON CACHE BOOL
"EXAMPLEPLUGIN support for the llplugin/llmedia test apps.") "EXAMPLEPLUGIN support for the llplugin/llmedia test apps.")
endif (USESYSTEMLIBS)
if (WINDOWS)
elseif (DARWIN)
elseif (LINUX)
endif (WINDOWS)

View File

@ -1,16 +1,30 @@
# -*- cmake -*- # -*- cmake -*-
include_guard()
# FMODSTUDIO can be set when launching the make using the argument -DFMODSTUDIO:BOOL=ON # FMODSTUDIO can be set when launching the make using the argument -DFMODSTUDIO:BOOL=ON
# When building using proprietary binaries though (i.e. having access to LL private servers), # When building using proprietary binaries though (i.e. having access to LL private servers),
# we always build with FMODSTUDIO. # we always build with FMODSTUDIO.
if (INSTALL_PROPRIETARY) if (INSTALL_PROPRIETARY)
set(FMODSTUDIO ON CACHE BOOL "Using FMODSTUDIO sound library.") set(USE_FMODSTUDIO ON CACHE BOOL "Using FMODSTUDIO sound library.")
endif (INSTALL_PROPRIETARY) endif (INSTALL_PROPRIETARY)
# ND: To streamline arguments passed, switch from FMODSTUDIO to USE_FMODSTUDIO
# To not break all old build scripts convert old arguments but warn about it
if(FMODSTUDIO) if(FMODSTUDIO)
message( WARNING "Use of the FMODSTUDIO argument is deprecated, please switch to USE_FMODSTUDIO")
set(USE_FMODSTUDIO ${FMODSTUDIO})
endif()
if (USE_FMODSTUDIO)
add_library( ll::fmodstudio INTERFACE IMPORTED )
target_compile_definitions( ll::fmodstudio INTERFACE LL_FMODSTUDIO=1)
if (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR) if (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
# If the path have been specified in the arguments, use that # If the path have been specified in the arguments, use that
set(FMODSTUDIO_LIBRARIES ${FMODSTUDIO_LIBRARY})
target_link_libraries(ll::fmodstudio INTERFACE ${FMODSTUDIO_LIBRARY})
target_include_directories( ll::fmodstudio SYSTEM INTERFACE ${FMODSTUDIO_INCLUDE_DIR})
else (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR) else (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
# If not, we're going to try to get the package listed in autobuild.xml # If not, we're going to try to get the package listed in autobuild.xml
# Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL) # Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL)
@ -18,21 +32,17 @@ if (FMODSTUDIO)
include(Prebuilt) include(Prebuilt)
use_prebuilt_binary(fmodstudio) use_prebuilt_binary(fmodstudio)
if (WINDOWS) if (WINDOWS)
set(FMODSTUDIO_LIBRARY target_link_libraries( ll::fmodstudio INTERFACE fmod_vc)
debug fmodL_vc
optimized fmod_vc)
elseif (DARWIN) elseif (DARWIN)
#despite files being called libfmod.dylib, we are searching for fmod #despite files being called libfmod.dylib, we are searching for fmod
set(FMODSTUDIO_LIBRARY target_link_libraries( ll::fmodstudio INTERFACE fmod)
debug fmodL
optimized fmod)
elseif (LINUX) elseif (LINUX)
set(FMODSTUDIO_LIBRARY target_link_libraries( ll::fmodstudio INTERFACE fmod)
debug fmodL
optimized fmod)
endif (WINDOWS) endif (WINDOWS)
set(FMODSTUDIO_LIBRARIES ${FMODSTUDIO_LIBRARY})
set(FMODSTUDIO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/fmodstudio) target_include_directories( ll::fmodstudio SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/fmodstudio)
endif (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR) endif (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
endif (FMODSTUDIO) else()
set( USE_FMODSTUDIO "OFF")
endif ()

View File

@ -1,94 +0,0 @@
# -*- cmake -*-
# - Find Apache Portable Runtime
# Find the APR includes and libraries
# This module defines
# APR_INCLUDE_DIR and APRUTIL_INCLUDE_DIR, where to find apr.h, etc.
# APR_LIBRARIES and APRUTIL_LIBRARIES, the libraries needed to use APR.
# APR_FOUND and APRUTIL_FOUND, If false, do not try to use APR.
# also defined, but not for general use are
# APR_LIBRARY and APRUTIL_LIBRARY, where to find the APR library.
# APR first.
FIND_PATH(APR_INCLUDE_DIR apr.h
/usr/local/include/apr-1
/usr/local/include/apr-1.0
/usr/include/apr-1
/usr/include/apr-1.0
)
SET(APR_NAMES ${APR_NAMES} apr-1)
FIND_LIBRARY(APR_LIBRARY
NAMES ${APR_NAMES}
PATHS /usr/lib /usr/local/lib
)
IF (APR_LIBRARY AND APR_INCLUDE_DIR)
SET(APR_LIBRARIES ${APR_LIBRARY})
SET(APR_FOUND "YES")
ELSE (APR_LIBRARY AND APR_INCLUDE_DIR)
SET(APR_FOUND "NO")
ENDIF (APR_LIBRARY AND APR_INCLUDE_DIR)
IF (APR_FOUND)
IF (NOT APR_FIND_QUIETLY)
MESSAGE(STATUS "Found APR: ${APR_LIBRARIES}")
ENDIF (NOT APR_FIND_QUIETLY)
ELSE (APR_FOUND)
IF (APR_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find APR library")
ENDIF (APR_FIND_REQUIRED)
ENDIF (APR_FOUND)
# Deprecated declarations.
SET (NATIVE_APR_INCLUDE_PATH ${APR_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_APR_LIB_PATH ${APR_LIBRARY} PATH)
MARK_AS_ADVANCED(
APR_LIBRARY
APR_INCLUDE_DIR
)
# Next, APRUTIL.
FIND_PATH(APRUTIL_INCLUDE_DIR apu.h
/usr/local/include/apr-1
/usr/local/include/apr-1.0
/usr/include/apr-1
/usr/include/apr-1.0
)
SET(APRUTIL_NAMES ${APRUTIL_NAMES} aprutil-1)
FIND_LIBRARY(APRUTIL_LIBRARY
NAMES ${APRUTIL_NAMES}
PATHS /usr/lib /usr/local/lib
)
IF (APRUTIL_LIBRARY AND APRUTIL_INCLUDE_DIR)
SET(APRUTIL_LIBRARIES ${APRUTIL_LIBRARY})
SET(APRUTIL_FOUND "YES")
ELSE (APRUTIL_LIBRARY AND APRUTIL_INCLUDE_DIR)
SET(APRUTIL_FOUND "NO")
ENDIF (APRUTIL_LIBRARY AND APRUTIL_INCLUDE_DIR)
IF (APRUTIL_FOUND)
IF (NOT APRUTIL_FIND_QUIETLY)
MESSAGE(STATUS "Found APRUTIL: ${APRUTIL_LIBRARIES}")
ENDIF (NOT APRUTIL_FIND_QUIETLY)
ELSE (APRUTIL_FOUND)
IF (APRUTIL_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find APRUTIL library")
ENDIF (APRUTIL_FIND_REQUIRED)
ENDIF (APRUTIL_FOUND)
# Deprecated declarations.
SET (NATIVE_APRUTIL_INCLUDE_PATH ${APRUTIL_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_APRUTIL_LIB_PATH ${APRUTIL_LIBRARY} PATH)
MARK_AS_ADVANCED(
APRUTIL_LIBRARY
APRUTIL_INCLUDE_DIR
)

View File

@ -1,30 +0,0 @@
# -*- cmake -*-
# - Find GLH
# Find the Graphic Library Helper includes.
# This module defines
# GLH_INCLUDE_DIR, where to find glh/glh_linear.h.
# GLH_FOUND, If false, do not try to use GLH.
find_path(GLH_INCLUDE_DIR glh/glh_linear.h
NO_SYSTEM_ENVIRONMENT_PATH
)
if (GLH_INCLUDE_DIR)
set(GLH_FOUND "YES")
else (GLH_INCLUDE_DIR)
set(GLH_FOUND "NO")
endif (GLH_INCLUDE_DIR)
if (GLH_FOUND)
if (NOT GLH_FIND_QUIETLY)
message(STATUS "Found GLH: ${GLH_INCLUDE_DIR}")
set(GLH_FIND_QUIETLY TRUE) # Only alert us the first time
endif (NOT GLH_FIND_QUIETLY)
else (GLH_FOUND)
if (GLH_FIND_REQUIRED)
message(FATAL_ERROR "Could not find GLH")
endif (GLH_FIND_REQUIRED)
endif (GLH_FOUND)
mark_as_advanced(GLH_INCLUDE_DIR)

View File

@ -1,66 +0,0 @@
# -*- cmake -*-
# - Find Google perftools
# Find the Google perftools includes and libraries
# This module defines
# GOOGLE_PERFTOOLS_INCLUDE_DIR, where to find heap-profiler.h, etc.
# GOOGLE_PERFTOOLS_FOUND, If false, do not try to use Google perftools.
# also defined for general use are
# TCMALLOC_LIBRARIES, where to find the tcmalloc library.
# STACKTRACE_LIBRARIES, where to find the stacktrace library.
# PROFILER_LIBRARIES, where to find the profiler library.
FIND_PATH(GOOGLE_PERFTOOLS_INCLUDE_DIR google/heap-profiler.h
/usr/local/include
/usr/include
)
SET(TCMALLOC_NAMES ${TCMALLOC_NAMES} tcmalloc)
FIND_LIBRARY(TCMALLOC_LIBRARY
NAMES ${TCMALLOC_NAMES}
PATHS /usr/lib /usr/local/lib
)
IF (TCMALLOC_LIBRARY AND GOOGLE_PERFTOOLS_INCLUDE_DIR)
SET(TCMALLOC_LIBRARIES ${TCMALLOC_LIBRARY})
SET(GOOGLE_PERFTOOLS_FOUND "YES")
ELSE (TCMALLOC_LIBRARY AND GOOGLE_PERFTOOLS_INCLUDE_DIR)
SET(GOOGLE_PERFTOOLS_FOUND "NO")
ENDIF (TCMALLOC_LIBRARY AND GOOGLE_PERFTOOLS_INCLUDE_DIR)
SET(STACKTRACE_NAMES ${STACKTRACE_NAMES} stacktrace)
FIND_LIBRARY(STACKTRACE_LIBRARY
NAMES ${STACKTRACE_LIBRARY}
PATHS /usr/lib /usr/local/lib
)
IF (STACKTRACE_LIBRARY AND GOOGLE_PERFTOOLS_INCLUDE_DIR)
SET(STACKTRACE_LIBRARIES ${STACKTRACE_LIBRARY})
ENDIF (STACKTRACE_LIBRARY AND GOOGLE_PERFTOOLS_INCLUDE_DIR)
SET(PROFILER_NAMES ${PROFILER_NAMES} profiler)
FIND_LIBRARY(PROFILER_LIBRARY
NAMES ${PROFILER_LIBRARY}
PATHS /usr/lib /usr/local/lib
)
IF (PROFILER_LIBRARY AND GOOGLE_PERFTOOLS_INCLUDE_DIR)
SET(PROFILER_LIBRARIES ${PROFILER_LIBRARY})
ENDIF (PROFILER_LIBRARY AND GOOGLE_PERFTOOLS_INCLUDE_DIR)
IF (GOOGLE_PERFTOOLS_FOUND)
IF (NOT GOOGLE_PERFTOOLS_FIND_QUIETLY)
MESSAGE(STATUS "Found Google perftools: ${GOOGLE_PERFTOOLS_LIBRARIES}")
ENDIF (NOT GOOGLE_PERFTOOLS_FIND_QUIETLY)
ELSE (GOOGLE_PERFTOOLS_FOUND)
IF (GOOGLE_PERFTOOLS_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find Google perftools library")
ENDIF (GOOGLE_PERFTOOLS_FIND_REQUIRED)
ENDIF (GOOGLE_PERFTOOLS_FOUND)
MARK_AS_ADVANCED(
TCMALLOC_LIBRARY
STACKTRACE_LIBRARY
PROFILER_LIBRARY
GOOGLE_PERFTOOLS_INCLUDE_DIR
)

View File

@ -1,38 +0,0 @@
# -*- cmake -*-
# - Find HUNSPELL
# This module defines
# HUNSPELL_INCLUDE_DIR, where to find libhunspell.h, etc.
# HUNSPELL_LIBRARY, the library needed to use HUNSPELL.
# HUNSPELL_FOUND, If false, do not try to use HUNSPELL.
find_path(HUNSPELL_INCLUDE_DIR hunspell.h
PATH_SUFFIXES hunspell
)
set(HUNSPELL_NAMES ${HUNSPELL_NAMES} libhunspell-1.3 libhunspell)
find_library(HUNSPELL_LIBRARY
NAMES ${HUNSPELL_NAMES}
)
if (HUNSPELL_LIBRARY AND HUNSPELL_INCLUDE_DIR)
set(HUNSPELL_FOUND "YES")
else (HUNSPELL_LIBRARY AND HUNSPELL_INCLUDE_DIR)
set(HUNSPELL_FOUND "NO")
endif (HUNSPELL_LIBRARY AND HUNSPELL_INCLUDE_DIR)
if (HUNSPELL_FOUND)
if (NOT HUNSPELL_FIND_QUIETLY)
message(STATUS "Found Hunspell: Library in '${HUNSPELL_LIBRARY}' and header in '${HUNSPELL_INCLUDE_DIR}' ")
endif (NOT HUNSPELL_FIND_QUIETLY)
else (HUNSPELL_FOUND)
if (HUNSPELL_FIND_REQUIRED)
message(FATAL_ERROR " * * *\nCould not find HUNSPELL library! * * *")
endif (HUNSPELL_FIND_REQUIRED)
endif (HUNSPELL_FOUND)
mark_as_advanced(
HUNSPELL_LIBRARY
HUNSPELL_INCLUDE_DIR
)

View File

@ -1,60 +0,0 @@
# -*- cmake -*-
# - Find JSONCpp
# Find the JSONCpp includes and library
# This module defines
# JSONCPP_INCLUDE_DIR, where to find json.h, etc.
# JSONCPP_LIBRARIES, the libraries needed to use jsoncpp.
# JSONCPP_FOUND, If false, do not try to use jsoncpp.
# also defined, but not for general use are
# JSONCPP_LIBRARY, where to find the jsoncpp library.
FIND_PATH(JSONCPP_INCLUDE_DIR jsoncpp/json.h
/usr/local/include
/usr/include
)
# Get the GCC compiler version
EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
OUTPUT_VARIABLE _gcc_COMPILER_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Try to find a library that was compiled with the same compiler version as we currently use.
SET(JSONCPP_NAMES ${JSONCPP_NAMES} libjson_linux-gcc-${_gcc_COMPILER_VERSION}_libmt.so)
IF (USESYSTEMLIBS)
# On standalone, assume that the system installed library was compiled with the used compiler.
SET(JSONCPP_NAMES ${JSONCPP_NAMES} libjson.so)
ENDIF (USESYSTEMLIBS)
FIND_LIBRARY(JSONCPP_LIBRARY
NAMES ${JSONCPP_NAMES}
PATHS /usr/lib /usr/local/lib
)
IF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR)
SET(JSONCPP_LIBRARIES ${JSONCPP_LIBRARY})
SET(JSONCPP_FOUND "YES")
ELSE (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR)
SET(JSONCPP_FOUND "NO")
ENDIF (JSONCPP_LIBRARY AND JSONCPP_INCLUDE_DIR)
IF (JSONCPP_FOUND)
IF (NOT JSONCPP_FIND_QUIETLY)
MESSAGE(STATUS "Found JSONCpp: ${JSONCPP_LIBRARIES}")
ENDIF (NOT JSONCPP_FIND_QUIETLY)
ELSE (JSONCPP_FOUND)
IF (JSONCPP_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find JSONCpp library")
ENDIF (JSONCPP_FIND_REQUIRED)
ENDIF (JSONCPP_FOUND)
# Deprecated declarations.
SET (NATIVE_JSONCPP_INCLUDE_PATH ${JSONCPP_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_JSONCPP_LIB_PATH ${JSONCPP_LIBRARY} PATH)
MARK_AS_ADVANCED(
JSONCPP_LIBRARY
JSONCPP_INCLUDE_DIR
)

View File

@ -1,39 +0,0 @@
# -*- cmake -*-
# - Find NDOF
# Find the NDOF includes and library
# This module defines
# NDOF_INCLUDE_DIR, where to find ndofdev_external.h, etc.
# NDOF_LIBRARY, the library needed to use NDOF.
# NDOF_FOUND, If false, do not try to use NDOF.
find_path(NDOF_INCLUDE_DIR ndofdev_external.h
PATH_SUFFIXES ndofdev
)
set(NDOF_NAMES ${NDOF_NAMES} ndofdev libndofdev)
find_library(NDOF_LIBRARY
NAMES ${NDOF_NAMES}
)
if (NDOF_LIBRARY AND NDOF_INCLUDE_DIR)
set(NDOF_FOUND "YES")
else (NDOF_LIBRARY AND NDOF_INCLUDE_DIR)
set(NDOF_FOUND "NO")
endif (NDOF_LIBRARY AND NDOF_INCLUDE_DIR)
if (NDOF_FOUND)
if (NOT NDOF_FIND_QUIETLY)
message(STATUS "Found NDOF: Library in '${NDOF_LIBRARY}' and header in '${NDOF_INCLUDE_DIR}' ")
endif (NOT NDOF_FIND_QUIETLY)
else (NDOF_FOUND)
if (NDOF_FIND_REQUIRED)
message(FATAL_ERROR " * * *\nCould not find NDOF library!\nIf you don't need Space Navigator Joystick support you can skip this test by configuring with -DNDOF:BOOL=OFF\n * * *")
endif (NDOF_FIND_REQUIRED)
endif (NDOF_FOUND)
mark_as_advanced(
NDOF_LIBRARY
NDOF_INCLUDE_DIR
)

View File

@ -1,51 +0,0 @@
# -*- cmake -*-
# - Find OpenJPEG
# Find the OpenJPEG includes and library
# This module defines
# OPENJPEG_INCLUDE_DIR, where to find openjpeg.h, etc.
# OPENJPEG_LIBRARIES, the libraries needed to use OpenJPEG.
# OPENJPEG_FOUND, If false, do not try to use OpenJPEG.
# also defined, but not for general use are
# OPENJPEG_LIBRARY, where to find the OpenJPEG library.
FIND_PATH(OPENJPEG_INCLUDE_DIR openjpeg.h
/usr/local/include/openjpeg
/usr/local/include
/usr/include/openjpeg
/usr/include
include/openjpeg
)
SET(OPENJPEG_NAMES ${OPENJPEG_NAMES} openjp2)
FIND_LIBRARY(OPENJPEG_LIBRARY
NAMES ${OPENJPEG_NAMES}
PATHS /usr/lib /usr/local/lib
)
IF (OPENJPEG_LIBRARY AND OPENJPEG_INCLUDE_DIR)
SET(OPENJPEG_LIBRARIES ${OPENJPEG_LIBRARY})
SET(OPENJPEG_FOUND "YES")
ELSE (OPENJPEG_LIBRARY AND OPENJPEG_INCLUDE_DIR)
SET(OPENJPEG_FOUND "NO")
ENDIF (OPENJPEG_LIBRARY AND OPENJPEG_INCLUDE_DIR)
IF (OPENJPEG_FOUND)
IF (NOT OPENJPEG_FIND_QUIETLY)
MESSAGE(STATUS "Found OpenJPEG: ${OPENJPEG_LIBRARIES}")
ENDIF (NOT OPENJPEG_FIND_QUIETLY)
ELSE (OPENJPEG_FOUND)
IF (OPENJPEG_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find OpenJPEG library")
ENDIF (OPENJPEG_FIND_REQUIRED)
ENDIF (OPENJPEG_FOUND)
# Deprecated declarations.
SET (NATIVE_OPENJPEG_INCLUDE_PATH ${OPENJPEG_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_OPENJPEG_LIB_PATH ${OPENJPEG_LIBRARY} PATH)
MARK_AS_ADVANCED(
OPENJPEG_LIBRARY
OPENJPEG_INCLUDE_DIR
)

View File

@ -1,46 +0,0 @@
# -*- cmake -*-
# - Find uriparser
# Find the URIPARSER includes and library
# This module defines
# URIPARSER_INCLUDE_DIRS, where to find uriparser.h, etc.
# URIPARSER_LIBRARIES, the libraries needed to use uriparser.
# URIPARSER_FOUND, If false, do not try to use uriparser.
#
# This FindURIPARSER is about 43 times as fast the one provided with cmake (2.8.x),
# because it doesn't look up the version of uriparser, resulting in a dramatic
# speed up for configure (from 4 minutes 22 seconds to 6 seconds).
#
# Note: Since this file is only used for standalone, the windows
# specific parts were left out.
FIND_PATH(URIPARSER_INCLUDE_DIR uriparser/uri.h
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_LIBRARY(URIPARSER_LIBRARY uriparser)
if (URIPARSER_LIBRARY AND URIPARSER_INCLUDE_DIR)
SET(URIPARSER_INCLUDE_DIRS ${URIPARSER_INCLUDE_DIR})
SET(URIPARSER_LIBRARIES ${URIPARSER_LIBRARY})
SET(URIPARSER_FOUND "YES")
else (URIPARSER_LIBRARY AND URIPARSER_INCLUDE_DIR)
SET(URIPARSER_FOUND "NO")
endif (URIPARSER_LIBRARY AND URIPARSER_INCLUDE_DIR)
if (URIPARSER_FOUND)
if (NOT URIPARSER_FIND_QUIETLY)
message(STATUS "Found URIPARSER: ${URIPARSER_LIBRARIES}")
SET(URIPARSER_FIND_QUIETLY TRUE)
endif (NOT URIPARSER_FIND_QUIETLY)
else (URIPARSER_FOUND)
if (URIPARSER_FIND_REQUIRED)
message(FATAL_ERROR "Could not find URIPARSER library")
endif (URIPARSER_FIND_REQUIRED)
endif (URIPARSER_FOUND)
mark_as_advanced(
URIPARSER_LIBRARY
URIPARSER_INCLUDE_DIR
)

View File

@ -1,48 +0,0 @@
# -*- cmake -*-
# - Find XMLRPC-EPI
# Find the XMLRPC-EPI includes and library
# This module defines
# XMLRPCEPI_INCLUDE_DIR, where to find jpeglib.h, etc.
# XMLRPCEPI_LIBRARIES, the libraries needed to use XMLRPC-EPI.
# XMLRPCEPI_FOUND, If false, do not try to use XMLRPC-EPI.
# also defined, but not for general use are
# XMLRPCEPI_LIBRARY, where to find the XMLRPC-EPI library.
FIND_PATH(XMLRPCEPI_INCLUDE_DIR xmlrpc-epi/xmlrpc.h
/usr/local/include
/usr/include
)
SET(XMLRPCEPI_NAMES ${XMLRPCEPI_NAMES} xmlrpc-epi)
FIND_LIBRARY(XMLRPCEPI_LIBRARY
NAMES ${XMLRPCEPI_NAMES}
PATHS /usr/lib /usr/local/lib
)
IF (XMLRPCEPI_LIBRARY AND XMLRPCEPI_INCLUDE_DIR)
SET(XMLRPCEPI_LIBRARIES ${XMLRPCEPI_LIBRARY})
SET(XMLRPCEPI_FOUND "YES")
ELSE (XMLRPCEPI_LIBRARY AND XMLRPCEPI_INCLUDE_DIR)
SET(XMLRPCEPI_FOUND "NO")
ENDIF (XMLRPCEPI_LIBRARY AND XMLRPCEPI_INCLUDE_DIR)
IF (XMLRPCEPI_FOUND)
IF (NOT XMLRPCEPI_FIND_QUIETLY)
MESSAGE(STATUS "Found XMLRPC-EPI: ${XMLRPCEPI_LIBRARIES}")
ENDIF (NOT XMLRPCEPI_FIND_QUIETLY)
ELSE (XMLRPCEPI_FOUND)
IF (XMLRPCEPI_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find XMLRPC-EPI library")
ENDIF (XMLRPCEPI_FIND_REQUIRED)
ENDIF (XMLRPCEPI_FOUND)
# Deprecated declarations.
SET (NATIVE_XMLRPCEPI_INCLUDE_PATH ${XMLRPCEPI_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_XMLRPCEPI_LIB_PATH ${XMLRPCEPI_LIBRARY} PATH)
MARK_AS_ADVANCED(
XMLRPCEPI_LIBRARY
XMLRPCEPI_INCLUDE_DIR
)

View File

@ -1,46 +0,0 @@
# -*- cmake -*-
# - Find zlib-ng
# Find the ZLIB includes and library
# This module defines
# ZLIBNG_INCLUDE_DIRS, where to find zlib.h, etc.
# ZLIBNG_LIBRARIES, the libraries needed to use zlib.
# ZLIBNG_FOUND, If false, do not try to use zlib.
#
# This FindZLIBNG is about 43 times as fast the one provided with cmake (2.8.x),
# because it doesn't look up the version of zlib, resulting in a dramatic
# speed up for configure (from 4 minutes 22 seconds to 6 seconds).
#
# Note: Since this file is only used for standalone, the windows
# specific parts were left out.
FIND_PATH(ZLIBNG_INCLUDE_DIR zlib.h
NO_SYSTEM_ENVIRONMENT_PATH
)
FIND_LIBRARY(ZLIBNG_LIBRARY z)
if (ZLIBNG_LIBRARY AND ZLIBNG_INCLUDE_DIR)
SET(ZLIBNG_INCLUDE_DIRS ${ZLIBNG_INCLUDE_DIR})
SET(ZLIBNG_LIBRARIES ${ZLIBNG_LIBRARY})
SET(ZLIBNG_FOUND "YES")
else (ZLIBNG_LIBRARY AND ZLIBNG_INCLUDE_DIR)
SET(ZLIBNG_FOUND "NO")
endif (ZLINGB_LIBRARY AND ZLIBNG_INCLUDE_DIR)
if (ZLIBNG_FOUND)
if (NOT ZLIBNG_FIND_QUIETLY)
message(STATUS "Found ZLIBNG: ${ZLIBNG_LIBRARIES}")
SET(ZLIBNG_FIND_QUIETLY TRUE)
endif (NOT ZLIBNG_FIND_QUIETLY)
else (ZLIBNG_FOUND)
if (ZLIBNG_FIND_REQUIRED)
message(FATAL_ERROR "Could not find ZLIBNG library")
endif (ZLIBNG_FIND_REQUIRED)
endif (ZLIBNG_FOUND)
mark_as_advanced(
ZLIBNG_LIBRARY
ZLIBNG_INCLUDE_DIR
)

View File

@ -1,14 +1,11 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) include_guard()
include(FindPkgConfig) add_library( ll::freetype INTERFACE IMPORTED )
pkg_check_modules(FREETYPE REQUIRED freetype2) use_system_binary(freetype)
else (USESYSTEMLIBS)
use_prebuilt_binary(freetype) use_prebuilt_binary(freetype)
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/freetype2/) target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/)
set(FREETYPE_LIBRARIES freetype) target_link_libraries( ll::freetype INTERFACE freetype )
endif (USESYSTEMLIBS)
link_directories(${FREETYPE_LIBRARY_DIRS})

View File

@ -1,10 +1,11 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
include(GLH)
if (NOT USESYSTEMLIBS) add_library( ll::glext INTERFACE IMPORTED )
if (WINDOWS OR LINUX) if (WINDOWS OR LINUX)
use_system_binary(glext)
use_prebuilt_binary(glext) use_prebuilt_binary(glext)
endif (WINDOWS OR LINUX) endif (WINDOWS OR LINUX)
use_prebuilt_binary(glh_linear)
set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)
endif (NOT USESYSTEMLIBS)

View File

@ -1,11 +1,7 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(GLH_FIND_REQUIRED TRUE) add_library( ll::glh_linear INTERFACE IMPORTED )
set(GLH_FIND_QUIETLY TRUE)
if (USESYSTEMLIBS) use_system_binary( glh_linear )
include(FindGLH)
else (USESYSTEMLIBS)
use_prebuilt_binary(glh_linear) use_prebuilt_binary(glh_linear)
endif (USESYSTEMLIBS)

View File

@ -1,38 +1,12 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if (NOT LINUX)
return()
endif()
if (USESYSTEMLIBS) add_library( ll::gstreamer INTERFACE IMPORTED )
include(FindPkgConfig) target_compile_definitions( ll::gstreamer INTERFACE LL_GSTREAMER010_ENABLED=1)
use_system_binary(gstreamer)
pkg_check_modules(GSTREAMER010 REQUIRED gstreamer-0.10)
pkg_check_modules(GSTREAMER010_PLUGINS_BASE REQUIRED gstreamer-plugins-base-0.10)
elseif (LINUX)
use_prebuilt_binary(gstreamer) use_prebuilt_binary(gstreamer)
# possible libxml2 should have its own .cmake file instead
use_prebuilt_binary(libxml2)
set(GSTREAMER010_FOUND ON FORCE BOOL)
set(GSTREAMER010_PLUGINS_BASE_FOUND ON FORCE BOOL)
set(GSTREAMER010_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include/gstreamer-0.10
${LIBS_PREBUILT_DIR}/include/glib-2.0
${LIBS_PREBUILT_DIR}/include/libxml2
)
# We don't need to explicitly link against gstreamer itself, because
# LLMediaImplGStreamer probes for the system's copy at runtime.
set(GSTREAMER010_LIBRARIES
gobject-2.0
gmodule-2.0
dl
gthread-2.0
glib-2.0
)
endif (USESYSTEMLIBS)
if (GSTREAMER010_FOUND AND GSTREAMER010_PLUGINS_BASE_FOUND)
set(GSTREAMER010 ON CACHE BOOL "Build with GStreamer-0.10 streaming media support.")
endif (GSTREAMER010_FOUND AND GSTREAMER010_PLUGINS_BASE_FOUND)
if (GSTREAMER010)
add_definitions(-DLL_GSTREAMER010_ENABLED=1)
endif (GSTREAMER010)

View File

@ -2,27 +2,31 @@
include(Prebuilt) include(Prebuilt)
include(Linking) include(Linking)
include_guard()
add_library( ll::googlemock INTERFACE IMPORTED )
if(USE_CONAN)
target_link_libraries( ll::googlemock INTERFACE CONAN_PKG::gtest )
#Not very nice, but for the moment we need this for tut.hpp
target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
return()
endif()
use_prebuilt_binary(googlemock) use_prebuilt_binary(googlemock)
set(GOOGLEMOCK_INCLUDE_DIRS target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
${LIBS_PREBUILT_DIR}/include)
if (LINUX) if (LINUX)
# VWR-24366: gmock is underlinked, it needs gtest. # VWR-24366: gmock is underlinked, it needs gtest.
set(GOOGLEMOCK_LIBRARIES target_link_libraries( ll::googlemock INTERFACE gmock gtest)
gmock -Wl,--no-as-needed
gtest -Wl,--as-needed)
elseif(WINDOWS) elseif(WINDOWS)
set(GOOGLEMOCK_LIBRARIES target_link_libraries( ll::googlemock INTERFACE gmock)
gmock) target_include_directories( ll::googlemock SYSTEM INTERFACE
set(GOOGLEMOCK_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include ${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_DIR}/include/gmock ${LIBS_PREBUILT_DIR}/include/gmock)
${LIBS_PREBUILT_DIR}/include/gmock/boost/tr1/tr1)
elseif(DARWIN) elseif(DARWIN)
set(GOOGLEMOCK_LIBRARIES target_link_libraries( ll::googlemock INTERFACE gmock gtest)
gmock
gtest)
endif(LINUX) endif(LINUX)

View File

@ -1,7 +1,6 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED) include_guard()
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
use_prebuilt_binary(havok-source) use_prebuilt_binary(havok-source)
@ -124,4 +123,3 @@ foreach(HAVOK_LIB ${HAVOK_LIBS})
endif (LINUX) endif (LINUX)
endforeach(HAVOK_LIB) endforeach(HAVOK_LIB)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)

View File

@ -1,22 +1,17 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(HUNSPELL_FIND_QUIETLY ON) include_guard()
set(HUNSPELL_FIND_REQUIRED ON) use_prebuilt_binary(dictionaries)
if (USESYSTEMLIBS) add_library( ll::hunspell INTERFACE IMPORTED )
include(FindHUNSPELL) use_system_binary(hunspell)
else (USESYSTEMLIBS)
use_prebuilt_binary(libhunspell) use_prebuilt_binary(libhunspell)
if (WINDOWS) if (WINDOWS)
set(HUNSPELL_LIBRARY libhunspell) target_link_libraries( ll::hunspell INTERFACE libhunspell)
elseif(DARWIN) elseif(DARWIN)
set(HUNSPELL_LIBRARY hunspell-1.3) target_link_libraries( ll::hunspell INTERFACE hunspell-1.3)
elseif(LINUX) elseif(LINUX)
set(HUNSPELL_LIBRARY hunspell-1.3) target_link_libraries( ll::hunspell INTERFACE hunspell-1.3)
else()
message(FATAL_ERROR "Invalid platform")
endif() endif()
set(HUNSPELL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/hunspell) target_include_directories( ll::hunspell SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/hunspell)
use_prebuilt_binary(dictionaries)
endif (USESYSTEMLIBS)

View File

@ -2,19 +2,17 @@
include(Prebuilt) include(Prebuilt)
include(Linking) include(Linking)
set(JPEG_FIND_QUIETLY ON)
set(JPEG_FIND_REQUIRED ON)
if (USESYSTEMLIBS) include_guard()
include(FindJPEG) add_library( ll::libjpeg INTERFACE IMPORTED )
else (USESYSTEMLIBS)
use_system_binary(libjpeg)
use_prebuilt_binary(jpeglib) use_prebuilt_binary(jpeglib)
if (LINUX) if (LINUX)
set(JPEG_LIBRARIES jpeg) target_link_libraries( ll::libjpeg INTERFACE jpeg)
elseif (DARWIN) elseif (DARWIN)
set(JPEG_LIBRARIES jpeg) target_link_libraries( ll::libjpeg INTERFACE jpeg)
elseif (WINDOWS) elseif (WINDOWS)
set(JPEG_LIBRARIES jpeglib) target_link_libraries( ll::libjpeg INTERFACE jpeglib)
endif (LINUX) endif (LINUX)
set(JPEG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) target_include_directories( ll::libjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
endif (USESYSTEMLIBS)

View File

@ -1,22 +1,17 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
include_guard()
add_library( ll::jsoncpp INTERFACE IMPORTED )
set(JSONCPP_FIND_QUIETLY ON) use_system_binary(jsoncpp)
set(JSONCPP_FIND_REQUIRED ON)
if (USESYSTEMLIBS)
include(FindJsonCpp)
else (USESYSTEMLIBS)
use_prebuilt_binary(jsoncpp) use_prebuilt_binary(jsoncpp)
if (WINDOWS) if (WINDOWS)
set(JSONCPP_LIBRARIES target_link_libraries( ll::jsoncpp INTERFACE json_libmd.lib )
debug json_libmdd.lib
optimized json_libmd.lib)
elseif (DARWIN) elseif (DARWIN)
set(JSONCPP_LIBRARIES libjson_darwin_libmt.a) target_link_libraries( ll::jsoncpp INTERFACE libjson_darwin_libmt.a )
elseif (LINUX) elseif (LINUX)
set(JSONCPP_LIBRARIES libjson_linux-gcc-4.1.3_libmt.a) target_link_libraries( ll::jsoncpp INTERFACE libjson_linux-gcc-4.1.3_libmt.a )
endif (WINDOWS) endif (WINDOWS)
set(JSONCPP_INCLUDE_DIR "${LIBS_PREBUILT_DIR}/include/jsoncpp" "${LIBS_PREBUILT_DIR}/include/json") target_include_directories( ll::jsoncpp SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
endif (USESYSTEMLIBS)

View File

@ -18,100 +18,86 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources)
# * properties for each sourcefile passed in indicate what libs to link that file with (MAKE NO ASSUMPTIONS ASIDE FROM TUT) # * properties for each sourcefile passed in indicate what libs to link that file with (MAKE NO ASSUMPTIONS ASIDE FROM TUT)
# #
# More info and examples at: https://wiki.secondlife.com/wiki/How_to_add_unit_tests_to_indra_code # More info and examples at: https://wiki.secondlife.com/wiki/How_to_add_unit_tests_to_indra_code
#
# WARNING: do NOT modify this code without working with poppy -
# there is another branch that will conflict heavily with any changes here.
INCLUDE(GoogleMock)
IF(LL_TEST_VERBOSE) # This here looks weird, but is needed. It will inject GoogleMock into projects that forgot to include `this` (LLAddBuildTest.cmake)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}") # But through some other means have access to this macro
ENDIF(LL_TEST_VERBOSE) include(GoogleMock)
if(LL_TEST_VERBOSE)
message("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}")
endif()
# Start with the header and project-wide setup before making targets # Start with the header and project-wide setup before making targets
#project(UNITTEST_PROJECT_${project}) #project(UNITTEST_PROJECT_${project})
# Setup includes, paths, etc # Setup includes, paths, etc
SET(alltest_SOURCE_FILES set(alltest_SOURCE_FILES
${CMAKE_SOURCE_DIR}/test/test.cpp ${CMAKE_SOURCE_DIR}/test/test.cpp
${CMAKE_SOURCE_DIR}/test/lltut.cpp ${CMAKE_SOURCE_DIR}/test/lltut.cpp
) )
SET(alltest_DEP_TARGETS set(alltest_DEP_TARGETS
# needed by the test harness itself # needed by the test harness itself
${APRUTIL_LIBRARIES}
${APR_LIBRARIES}
llcommon llcommon
) )
IF(NOT "${project}" STREQUAL "llmath")
set(alltest_LIBRARIES
llcommon
ll::googlemock
)
if(NOT "${project}" STREQUAL "llmath")
# add llmath as a dep unless the tested module *is* llmath! # add llmath as a dep unless the tested module *is* llmath!
LIST(APPEND alltest_DEP_TARGETS list(APPEND alltest_DEP_TARGETS llmath)
llmath list(APPEND alltest_LIBRARIES llmath )
) endif()
ENDIF(NOT "${project}" STREQUAL "llmath")
SET(alltest_INCLUDE_DIRS
${LLMATH_INCLUDE_DIRS}
${LLCOMMON_INCLUDE_DIRS}
${LIBS_OPEN_DIR}/test
${GOOGLEMOCK_INCLUDE_DIRS}
)
SET(alltest_LIBRARIES
${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY}
${GOOGLEMOCK_LIBRARIES}
${PTHREAD_LIBRARY}
${WINDOWS_LIBRARIES}
)
# Headers, for convenience in targets. # Headers, for convenience in targets.
SET(alltest_HEADER_FILES set(alltest_HEADER_FILES ${CMAKE_SOURCE_DIR}/test/test.h)
${CMAKE_SOURCE_DIR}/test/test.h
)
# start the source test executable definitions # start the source test executable definitions
SET(${project}_TEST_OUTPUT "") set(${project}_TEST_OUTPUT "")
FOREACH (source ${sources}) foreach (source ${sources})
STRING( REGEX REPLACE "(.*)\\.[^.]+$" "\\1" name ${source} ) string( REGEX REPLACE "(.*)\\.[^.]+$" "\\1" name ${source} )
STRING( REGEX REPLACE ".*\\.([^.]+)$" "\\1" extension ${source} ) string( REGEX REPLACE ".*\\.([^.]+)$" "\\1" extension ${source} )
IF(LL_TEST_VERBOSE) if(LL_TEST_VERBOSE)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} individual source: ${source} (${name}.${extension})") message("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} individual source: ${source} (${name}.${extension})")
ENDIF(LL_TEST_VERBOSE) endif()
# #
# Per-codefile additional / external source, header, and include dir property extraction # Per-codefile additional / external source, header, and include dir property extraction
# #
# Source # Source
GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_SOURCE_FILES ${source} LL_TEST_ADDITIONAL_SOURCE_FILES) GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_SOURCE_FILES ${source} LL_TEST_ADDITIONAL_SOURCE_FILES)
SET(${name}_test_SOURCE_FILES set(${name}_test_SOURCE_FILES
${source} ${source}
tests/${name}_test.${extension} tests/${name}_test.${extension}
${alltest_SOURCE_FILES} ${alltest_SOURCE_FILES}
${${name}_test_additional_SOURCE_FILES} ) ${${name}_test_additional_SOURCE_FILES} )
IF(LL_TEST_VERBOSE) if(LL_TEST_VERBOSE)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_SOURCE_FILES ${${name}_test_SOURCE_FILES}") message("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_SOURCE_FILES ${${name}_test_SOURCE_FILES}")
ENDIF(LL_TEST_VERBOSE) endif()
if (USE_BUGSPLAT)
SET_PROPERTY(SOURCE ${${name}_test_SOURCE_FILES}
APPEND PROPERTY COMPILE_DEFINITIONS "${BUGSPLAT_DEFINE}")
endif (USE_BUGSPLAT)
# Headers # Headers
GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_HEADER_FILES ${source} LL_TEST_ADDITIONAL_HEADER_FILES) GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_HEADER_FILES ${source} LL_TEST_ADDITIONAL_HEADER_FILES)
SET(${name}_test_HEADER_FILES ${name}.h ${${name}_test_additional_HEADER_FILES}) set(${name}_test_HEADER_FILES ${name}.h ${${name}_test_additional_HEADER_FILES})
set_source_files_properties(${${name}_test_HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) list(APPEND ${name}_test_SOURCE_FILES ${${name}_test_HEADER_FILES})
LIST(APPEND ${name}_test_SOURCE_FILES ${${name}_test_HEADER_FILES}) if(LL_TEST_VERBOSE)
IF(LL_TEST_VERBOSE) message("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_HEADER_FILES ${${name}_test_HEADER_FILES}")
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_HEADER_FILES ${${name}_test_HEADER_FILES}") endif()
ENDIF(LL_TEST_VERBOSE)
# Include dirs
GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_INCLUDE_DIRS ${source} LL_TEST_ADDITIONAL_INCLUDE_DIRS)
INCLUDE_DIRECTORIES(${alltest_INCLUDE_DIRS} ${${name}_test_additional_INCLUDE_DIRS} )
IF(LL_TEST_VERBOSE)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_INCLUDE_DIRS ${${name}_test_additional_INCLUDE_DIRS}")
ENDIF(LL_TEST_VERBOSE)
# Setup target # Setup target
ADD_EXECUTABLE(PROJECT_${project}_TEST_${name} ${${name}_test_SOURCE_FILES}) add_executable(PROJECT_${project}_TEST_${name} ${${name}_test_SOURCE_FILES})
SET_TARGET_PROPERTIES(PROJECT_${project}_TEST_${name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}")
# Cannot declare a dependency on ${project} because the executable create above will later declare
# add_dependencies( ${project} ${project}_tests)
# as such grab ${project}'s interface include dirs and inject them here
get_property( ${name}_test_additional_INCLUDE_DIRS TARGET ${project} PROPERTY INTERFACE_INCLUDE_DIRECTORIES )
target_include_directories (PROJECT_${project}_TEST_${name} PRIVATE ${${name}_test_additional_INCLUDE_DIRS} )
GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_INCLUDE_DIRS ${source} LL_TEST_ADDITIONAL_INCLUDE_DIRS)
target_include_directories (PROJECT_${project}_TEST_${name} PRIVATE ${${name}_test_additional_INCLUDE_DIRS} )
target_include_directories (PROJECT_${project}_TEST_${name} PRIVATE ${LIBS_OPEN_DIR}/test )
set_target_properties(PROJECT_${project}_TEST_${name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}")
# #
# Per-codefile additional / external project dep and lib dep property extraction # Per-codefile additional / external project dep and lib dep property extraction
@ -121,41 +107,45 @@ INCLUDE(GoogleMock)
GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_PROJECTS ${source} LL_TEST_ADDITIONAL_PROJECTS) GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_PROJECTS ${source} LL_TEST_ADDITIONAL_PROJECTS)
# Libraries # Libraries
GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_LIBRARIES ${source} LL_TEST_ADDITIONAL_LIBRARIES) GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_LIBRARIES ${source} LL_TEST_ADDITIONAL_LIBRARIES)
IF(LL_TEST_VERBOSE)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_PROJECTS ${${name}_test_additional_PROJECTS}") if(LL_TEST_VERBOSE)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_LIBRARIES ${${name}_test_additional_LIBRARIES}") message("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_PROJECTS ${${name}_test_additional_PROJECTS}")
ENDIF(LL_TEST_VERBOSE) message("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_LIBRARIES ${${name}_test_additional_LIBRARIES}")
endif()
# Add to project # Add to project
TARGET_LINK_LIBRARIES(PROJECT_${project}_TEST_${name} ${alltest_LIBRARIES} ${alltest_DEP_TARGETS} ${${name}_test_additional_PROJECTS} ${${name}_test_additional_LIBRARIES} ) target_link_libraries(PROJECT_${project}_TEST_${name} ${alltest_LIBRARIES} ${${name}_test_additional_PROJECTS} ${${name}_test_additional_LIBRARIES} )
add_dependencies( PROJECT_${project}_TEST_${name} ${alltest_DEP_TARGETS})
# Compile-time Definitions # Compile-time Definitions
GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_CFLAGS ${source} LL_TEST_ADDITIONAL_CFLAGS) GET_OPT_SOURCE_FILE_PROPERTY(${name}_test_additional_CFLAGS ${source} LL_TEST_ADDITIONAL_CFLAGS)
SET_TARGET_PROPERTIES(PROJECT_${project}_TEST_${name} set_target_properties(PROJECT_${project}_TEST_${name}
PROPERTIES PROPERTIES
COMPILE_FLAGS "${${name}_test_additional_CFLAGS}" COMPILE_FLAGS "${${name}_test_additional_CFLAGS}"
COMPILE_DEFINITIONS "LL_TEST=${name};LL_TEST_${name}") COMPILE_DEFINITIONS "LL_TEST=${name};LL_TEST_${name}")
IF(LL_TEST_VERBOSE) if(LL_TEST_VERBOSE)
MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_CFLAGS ${${name}_test_additional_CFLAGS}") message("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_CFLAGS ${${name}_test_additional_CFLAGS}")
ENDIF(LL_TEST_VERBOSE) endif()
# #
# Setup test targets # Setup test targets
# #
SET(TEST_EXE $<TARGET_FILE:PROJECT_${project}_TEST_${name}>) set(TEST_EXE $<TARGET_FILE:PROJECT_${project}_TEST_${name}>)
SET(TEST_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/PROJECT_${project}_TEST_${name}_ok.txt) set(TEST_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/PROJECT_${project}_TEST_${name}_ok.txt)
SET(TEST_CMD ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR}) set(TEST_CMD ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR})
# daveh - what configuration does this use? Debug? it's cmake-time, not build time. + poppy 2009-04-19 # daveh - what configuration does this use? Debug? it's cmake-time, not build time. + poppy 2009-04-19
IF(LL_TEST_VERBOSE) if(LL_TEST_VERBOSE)
MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_cmd = ${TEST_CMD}") message(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_cmd = ${TEST_CMD}")
ENDIF(LL_TEST_VERBOSE) endif()
SET_TEST_PATH(LD_LIBRARY_PATH) SET_TEST_PATH(LD_LIBRARY_PATH)
LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${TEST_CMD}) LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${TEST_CMD})
IF(LL_TEST_VERBOSE) if(LL_TEST_VERBOSE)
MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_script = ${TEST_SCRIPT_CMD}") message(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_script = ${TEST_SCRIPT_CMD}")
ENDIF(LL_TEST_VERBOSE) endif()
# Add test # Add test
ADD_CUSTOM_COMMAND( add_custom_command(
OUTPUT ${TEST_OUTPUT} OUTPUT ${TEST_OUTPUT}
COMMAND ${TEST_SCRIPT_CMD} COMMAND ${TEST_SCRIPT_CMD}
DEPENDS PROJECT_${project}_TEST_${name} DEPENDS PROJECT_${project}_TEST_${name}
@ -166,23 +156,23 @@ INCLUDE(GoogleMock)
# (OUTPUT commands run non-deterministically AFAIK) + poppy 2009-04-19 # (OUTPUT commands run non-deterministically AFAIK) + poppy 2009-04-19
# > I did not use a post build step as I could not make it notify of a # > I did not use a post build step as I could not make it notify of a
# > failure after the first time you build and fail a test. - daveh 2009-04-20 # > failure after the first time you build and fail a test. - daveh 2009-04-20
LIST(APPEND ${project}_TEST_OUTPUT ${TEST_OUTPUT}) list(APPEND ${project}_TEST_OUTPUT ${TEST_OUTPUT})
ENDFOREACH (source) endforeach (source)
# Add the test runner target per-project # Add the test runner target per-project
# (replaces old _test_ok targets all over the place) # (replaces old _test_ok targets all over the place)
ADD_CUSTOM_TARGET(${project}_tests ALL DEPENDS ${${project}_TEST_OUTPUT}) add_custom_target(${project}_tests ALL DEPENDS ${${project}_TEST_OUTPUT})
ADD_DEPENDENCIES(${project} ${project}_tests) add_dependencies(${project} ${project}_tests)
ENDMACRO(LL_ADD_PROJECT_UNIT_TESTS) ENDMACRO(LL_ADD_PROJECT_UNIT_TESTS)
#***************************************************************************** #*****************************************************************************
# GET_OPT_SOURCE_FILE_PROPERTY # GET_OPT_SOURCE_FILE_PROPERTY
#***************************************************************************** #*****************************************************************************
MACRO(GET_OPT_SOURCE_FILE_PROPERTY var filename property) MACRO(GET_OPT_SOURCE_FILE_PROPERTY var filename property)
GET_SOURCE_FILE_PROPERTY(${var} "${filename}" "${property}") get_source_file_property(${var} "${filename}" "${property}")
IF("${${var}}" MATCHES NOTFOUND) if("${${var}}" MATCHES NOTFOUND)
SET(${var} "") set(${var} "")
ENDIF("${${var}}" MATCHES NOTFOUND) endif()
ENDMACRO(GET_OPT_SOURCE_FILE_PROPERTY) ENDMACRO(GET_OPT_SOURCE_FILE_PROPERTY)
#***************************************************************************** #*****************************************************************************
@ -196,67 +186,54 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
) )
if(TEST_DEBUG) if(TEST_DEBUG)
message(STATUS "Adding INTEGRATION_TEST_${testname} - debug output is on") message(STATUS "Adding INTEGRATION_TEST_${testname} - debug output is on")
endif(TEST_DEBUG) endif()
SET(source_files set(source_files
tests/${testname}_test.cpp tests/${testname}_test.cpp
${CMAKE_SOURCE_DIR}/test/test.cpp ${CMAKE_SOURCE_DIR}/test/test.cpp
${CMAKE_SOURCE_DIR}/test/lltut.cpp ${CMAKE_SOURCE_DIR}/test/lltut.cpp
${additional_source_files} ${additional_source_files}
) )
SET(libraries set(libraries
${LEGACY_STDIO_LIBS}
${library_dependencies} ${library_dependencies}
${BOOST_FIBER_LIBRARY} ll::googlemock
${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY}
${GOOGLEMOCK_LIBRARIES}
${PTHREAD_LIBRARY}
) )
# Add test executable build target # Add test executable build target
if(TEST_DEBUG) if(TEST_DEBUG)
message(STATUS "ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})") message(STATUS "ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})")
endif(TEST_DEBUG) endif()
ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} add_executable(INTEGRATION_TEST_${testname} ${source_files})
set_target_properties(INTEGRATION_TEST_${testname}
PROPERTIES PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}" RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}"
COMPILE_DEFINITIONS "LL_TEST=${testname};LL_TEST_${testname}" COMPILE_DEFINITIONS "LL_TEST=${testname};LL_TEST_${testname}"
) )
if(USESYSTEMLIBS)
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}")
endif(USESYSTEMLIBS)
if (USE_BUGSPLAT)
SET_PROPERTY(SOURCE ${source_files}
APPEND PROPERTY COMPILE_DEFINITIONS "${BUGSPLAT_DEFINE}")
endif (USE_BUGSPLAT)
# The following was copied to llcorehttp/CMakeLists.txt's texture_load target. # The following was copied to llcorehttp/CMakeLists.txt's texture_load target.
# Any changes made here should be replicated there. # Any changes made here should be replicated there.
if (WINDOWS) if (WINDOWS)
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} set_target_properties(INTEGRATION_TEST_${testname}
PROPERTIES PROPERTIES
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:CONSOLE" LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:CONSOLE"
LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
LINK_FLAGS_RELEASE ""
) )
endif (WINDOWS) endif ()
# Add link deps to the executable # Add link deps to the executable
if(TEST_DEBUG) if(TEST_DEBUG)
message(STATUS "TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})") message(STATUS "TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})")
endif(TEST_DEBUG) endif()
TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})
target_link_libraries(INTEGRATION_TEST_${testname} ${libraries})
target_include_directories (INTEGRATION_TEST_${testname} PRIVATE ${LIBS_OPEN_DIR}/test )
# Create the test running command # Create the test running command
SET(test_command ${ARGN}) set(test_command ${ARGN})
SET(TEST_EXE $<TARGET_FILE:INTEGRATION_TEST_${testname}>) set(TEST_EXE $<TARGET_FILE:INTEGRATION_TEST_${testname}>)
LIST(FIND test_command "{}" test_exe_pos) list(FIND test_command "{}" test_exe_pos)
IF(test_exe_pos LESS 0) if(test_exe_pos LESS 0)
# The {} marker means "the full pathname of the test executable." # The {} marker means "the full pathname of the test executable."
# test_exe_pos -1 means we didn't find it -- so append the test executable # test_exe_pos -1 means we didn't find it -- so append the test executable
# name to $ARGN, the variable part of the arg list. This is convenient # name to $ARGN, the variable part of the arg list. This is convenient
@ -265,22 +242,22 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
# pathname of the test program as the last of its args. You need specify # pathname of the test program as the last of its args. You need specify
# {} only if the test program's pathname isn't the last argument in the # {} only if the test program's pathname isn't the last argument in the
# desired command line. # desired command line.
LIST(APPEND test_command "${TEST_EXE}") list(APPEND test_command "${TEST_EXE}")
ELSE (test_exe_pos LESS 0) else (test_exe_pos LESS 0)
# Found {} marker at test_exe_pos. Remove the {}... # Found {} marker at test_exe_pos. Remove the {}...
LIST(REMOVE_AT test_command test_exe_pos) list(REMOVE_AT test_command test_exe_pos)
# ...and replace it with the actual name of the test executable. # ...and replace it with the actual name of the test executable.
LIST(INSERT test_command test_exe_pos "${TEST_EXE}") list(INSERT test_command test_exe_pos "${TEST_EXE}")
ENDIF (test_exe_pos LESS 0) endif()
SET_TEST_PATH(LD_LIBRARY_PATH) SET_TEST_PATH(LD_LIBRARY_PATH)
LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${test_command}) LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${test_command})
if(TEST_DEBUG) if(TEST_DEBUG)
message(STATUS "TEST_SCRIPT_CMD: ${TEST_SCRIPT_CMD}") message(STATUS "TEST_SCRIPT_CMD: ${TEST_SCRIPT_CMD}")
endif(TEST_DEBUG) endif()
ADD_CUSTOM_COMMAND( add_custom_command(
TARGET INTEGRATION_TEST_${testname} TARGET INTEGRATION_TEST_${testname}
POST_BUILD POST_BUILD
COMMAND ${TEST_SCRIPT_CMD} COMMAND ${TEST_SCRIPT_CMD}
@ -299,18 +276,14 @@ MACRO(SET_TEST_PATH LISTVAR)
# We typically build/package only Release variants of third-party # We typically build/package only Release variants of third-party
# libraries, so append the Release staging dir in case the library being # libraries, so append the Release staging dir in case the library being
# sought doesn't have a debug variant. # sought doesn't have a debug variant.
set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR} ${SHARED_LIB_STAGING_DIR}/Release) set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} ${SHARED_LIB_STAGING_DIR}/Release)
ELSEIF(DARWIN) ELSEIF(DARWIN)
# We typically build/package only Release variants of third-party # We typically build/package only Release variants of third-party
# libraries, so append the Release staging dir in case the library being # libraries, so append the Release staging dir in case the library being
# sought doesn't have a debug variant. # sought doesn't have a debug variant.
set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources ${SHARED_LIB_STAGING_DIR}/Release/Resources /usr/lib) set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} ${SHARED_LIB_STAGING_DIR}/Release/Resources /usr/lib)
ELSE(WINDOWS) ELSE(WINDOWS)
# Linux uses a single staging directory anyway. # Linux uses a single staging directory anyway.
IF (USESYSTEMLIBS)
set(${LISTVAR} ${CMAKE_BINARY_DIR}/llcommon /usr/lib /usr/local/lib)
ELSE (USESYSTEMLIBS)
set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} /usr/lib) set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} /usr/lib)
ENDIF (USESYSTEMLIBS)
ENDIF(WINDOWS) ENDIF(WINDOWS)
ENDMACRO(SET_TEST_PATH) ENDMACRO(SET_TEST_PATH)

View File

@ -2,26 +2,9 @@
include(Variables) include(Variables)
include(Boost) include(Boost)
include(LLMessage)
include(LLCoreHttp) include(LLCoreHttp)
set(LLAPPEARANCE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llappearance
)
if (BUILD_HEADLESS)
set(LLAPPEARANCE_HEADLESS_LIBRARIES
llappearanceheadless
)
endif (BUILD_HEADLESS)
set(LLAPPEARANCE_LIBRARIES llappearance
llmessage
llcorehttp
${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY}
)

View File

@ -1,10 +1,3 @@
# -*- cmake -*- # -*- cmake -*-
include(Audio) include(Audio)
set(LLAUDIO_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llaudio
)
# be exhaustive here
set(LLAUDIO_LIBRARIES llaudio ${VORBISFILE_LIBRARIES} ${VORBIS_LIBRARIES} ${VORBISENC_LIBRARIES} ${OGG_LIBRARIES} ${OPENAL_LIBRARIES})

View File

@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLCHARACTER_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llcharacter
)
set(LLCHARACTER_LIBRARIES llcharacter)

View File

@ -5,38 +5,6 @@ include(Boost)
include(EXPAT) include(EXPAT)
include(Tracy) include(Tracy)
include(ZLIBNG) include(ZLIBNG)
include(JsonCpp)
set(LLCOMMON_INCLUDE_DIRS include(XmlRpcEpi)
${LIBS_OPEN_DIR}/llcommon
${APRUTIL_INCLUDE_DIR}
${APR_INCLUDE_DIR}
${TRACY_INCLUDE_DIR}
)
set(LLCOMMON_SYSTEM_INCLUDE_DIRS
${Boost_INCLUDE_DIRS}
)
if (LINUX)
# In order to support using ld.gold on linux, we need to explicitely
# specify all libraries that llcommon uses.
# llcommon uses `clock_gettime' which is provided by librt on linux.
set(LLCOMMON_LIBRARIES llcommon
${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY}
${BOOST_THREAD_LIBRARY}
${BOOST_SYSTEM_LIBRARY}
rt
)
else (LINUX)
set(LLCOMMON_LIBRARIES llcommon
${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY}
${BOOST_THREAD_LIBRARY}
${BOOST_SYSTEM_LIBRARY}
)
endif (LINUX)
set(LLCOMMON_LINK_SHARED OFF CACHE BOOL "Build the llcommon target as a static library.")
if(LLCOMMON_LINK_SHARED)
add_definitions(-DLL_COMMON_LINK_SHARED=1)
endif(LLCOMMON_LINK_SHARED)

View File

@ -2,16 +2,4 @@
include(CURL) include(CURL)
include(OpenSSL) include(OpenSSL)
include(Boost) include(NGHTTP2)
set(LLCOREHTTP_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llcorehttp
${CURL_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIRS}
${BOOST_INCLUDE_DIRS}
)
set(LLCOREHTTP_LIBRARIES llcorehttp
${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY}
${BOOST_SYSTEM_LIBRARY})

View File

@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLCRASHLOGGER_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llcrashlogger
)
set(LLCRASHLOGGER_LIBRARIES llcrashlogger)

View File

@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLFILESYSTEM_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llfilesystem
)
set(LLFILESYSTEM_LIBRARIES llfilesystem)

View File

@ -1,11 +1,4 @@
# -*- cmake -*- # -*- cmake -*-
include(JPEG) #include(JPEG)
include(PNG) include(PNG)
set(LLIMAGE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llimage
${JPEG_INCLUDE_DIRS}
)
set(LLIMAGE_LIBRARIES llimage)

View File

@ -1,5 +0,0 @@
# -*- cmake -*-
include(OpenJPEG)
set(LLIMAGEJ2COJ_LIBRARIES llimagej2coj)

View File

@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLINVENTORY_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llinventory
)
set(LLINVENTORY_LIBRARIES llinventory)

View File

@ -7,15 +7,20 @@ if (INSTALL_PROPRIETARY)
set(USE_KDU ON CACHE BOOL "Use Kakadu library.") set(USE_KDU ON CACHE BOOL "Use Kakadu library.")
endif (INSTALL_PROPRIETARY) endif (INSTALL_PROPRIETARY)
include_guard()
add_library( ll::kdu INTERFACE IMPORTED )
if (USE_KDU) if (USE_KDU)
include(Prebuilt) include(Prebuilt)
use_prebuilt_binary(kdu) use_prebuilt_binary(kdu)
if (WINDOWS) if (WINDOWS)
set(KDU_LIBRARY kdu.lib) target_link_libraries( ll::kdu INTERFACE kdu.lib)
else (WINDOWS) else (WINDOWS)
set(KDU_LIBRARY libkdu.a) target_link_libraries( ll::kdu INTERFACE libkdu.a)
endif (WINDOWS) endif (WINDOWS)
set(KDU_INCLUDE_DIR ${AUTOBUILD_INSTALL_DIR}/include/kdu)
set(LLKDU_INCLUDE_DIRS ${LIBS_OPEN_DIR}/llkdu) target_include_directories( ll::kdu SYSTEM INTERFACE
set(LLKDU_LIBRARIES llkdu) ${AUTOBUILD_INSTALL_DIR}/include/kdu
${LIBS_OPEN_DIR}/llkdu
)
endif (USE_KDU) endif (USE_KDU)

View File

@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLLOGIN_INCLUDE_DIRS
${LIBS_OPEN_DIR}/viewer_components/login
)
set(LLLOGIN_LIBRARIES lllogin)

View File

@ -1,7 +1,2 @@
# -*- cmake -*- # -*- cmake -*-
set(LLMATH_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llmath
)
set(LLMATH_LIBRARIES llmath)

View File

@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLMESHOPTIMIZER_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llmeshoptimizer
)
set(LLMESHOPTIMIZER_LIBRARIES llmeshoptimizer)

View File

@ -1,13 +0,0 @@
# -*- cmake -*-
include(CURL)
include(OpenSSL)
include(XmlRpcEpi)
set(LLMESSAGE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llmessage
${CURL_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIRS}
)
set(LLMESSAGE_LIBRARIES llmessage)

View File

@ -10,6 +10,9 @@ if (INSTALL_PROPRIETARY)
set(HAVOK ON CACHE BOOL "Use Havok physics library") set(HAVOK ON CACHE BOOL "Use Havok physics library")
endif (INSTALL_PROPRIETARY) endif (INSTALL_PROPRIETARY)
include_guard()
add_library( llphysicsextensions_impl INTERFACE IMPORTED )
# Note that the use_prebuilt_binary macros below do not in fact include binaries; # Note that the use_prebuilt_binary macros below do not in fact include binaries;
# the llphysicsextensions_* packages are source only and are built here. # the llphysicsextensions_* packages are source only and are built here.
@ -19,17 +22,14 @@ if (HAVOK)
include(Havok) include(Havok)
use_prebuilt_binary(llphysicsextensions_source) use_prebuilt_binary(llphysicsextensions_source)
set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/src) set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/src)
set(LLPHYSICSEXTENSIONS_LIBRARIES llphysicsextensions) target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions)
elseif (HAVOK_TPV) elseif (HAVOK_TPV)
use_prebuilt_binary(llphysicsextensions_tpv) use_prebuilt_binary(llphysicsextensions_tpv)
set(LLPHYSICSEXTENSIONS_LIBRARIES llphysicsextensions_tpv) target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensions_tpv)
else (HAVOK) else (HAVOK)
use_prebuilt_binary(llphysicsextensions_stub) use_prebuilt_binary(llphysicsextensions_stub)
set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub) set(LLPHYSICSEXTENSIONS_SRC_DIR ${LIBS_PREBUILT_DIR}/llphysicsextensions/stub)
set(LLPHYSICSEXTENSIONS_LIBRARIES llphysicsextensionsstub) target_link_libraries( llphysicsextensions_impl INTERFACE llphysicsextensionsstub)
endif (HAVOK) endif (HAVOK)
set(LLPHYSICSEXTENSIONS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/llphysicsextensions) target_include_directories( llphysicsextensions_impl INTERFACE ${LIBS_PREBUILT_DIR}/include/llphysicsextensions)

View File

@ -1,14 +0,0 @@
# -*- cmake -*-
set(LLPLUGIN_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llplugin
)
if (LINUX)
# In order to support using ld.gold on linux, we need to explicitely
# specify all libraries that llplugin uses.
set(LLPLUGIN_LIBRARIES llplugin pthread)
else (LINUX)
set(LLPLUGIN_LIBRARIES llplugin)
endif (LINUX)

View File

@ -4,49 +4,49 @@
include(Prebuilt) include(Prebuilt)
include(Boost) 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 )
# ND, needs fixup in collada conan pkg
if( USE_CONAN )
target_include_directories( ll::colladadom SYSTEM INTERFACE
"${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/"
"${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" )
endif()
use_system_binary( colladadom )
use_prebuilt_binary(colladadom) use_prebuilt_binary(colladadom)
use_prebuilt_binary(minizip-ng) # needed for colladadom use_prebuilt_binary(minizip-ng) # needed for colladadom
use_prebuilt_binary(pcre) use_prebuilt_binary(pcre)
use_prebuilt_binary(libxml2) use_prebuilt_binary(libxml2)
set(LLPRIMITIVE_INCLUDE_DIRS target_link_libraries( ll::pcre INTERFACE pcrecpp pcre )
${LIBS_OPEN_DIR}/llprimitive
if (WINDOWS)
target_link_libraries( ll::minizip-ng INTERFACE libminizip )
else()
target_link_libraries( ll::minizip-ng INTERFACE minizip )
endif()
if (WINDOWS)
target_link_libraries( ll::libxml INTERFACE libxml2_a)
else()
target_link_libraries( ll::libxml INTERFACE xml2)
endif()
target_include_directories( ll::colladadom SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include/collada
${LIBS_PREBUILT_DIR}/include/collada/1.4
) )
if (WINDOWS) if (WINDOWS)
set(LLPRIMITIVE_LIBRARIES target_link_libraries(ll::colladadom INTERFACE libcollada14dom23-s ll::libxml ll::minizip-ng )
debug llprimitive
optimized llprimitive
debug libcollada14dom23-sd
optimized libcollada14dom23-s
libxml2_a
debug pcrecppd
optimized pcrecpp
debug pcred
optimized pcre
debug libminizip
optimized libminizip
${BOOST_SYSTEM_LIBRARIES}
)
elseif (DARWIN) elseif (DARWIN)
set(LLPRIMITIVE_LIBRARIES target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng)
llprimitive
debug collada14dom-d
optimized collada14dom
minizip # for collada libminizip.a
xml2
pcrecpp
pcre
iconv # Required by libxml2
)
elseif (LINUX) elseif (LINUX)
set(LLPRIMITIVE_LIBRARIES target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng)
llprimitive endif()
debug collada14dom-d
optimized collada14dom
minizip
xml2
pcrecpp
pcre
)
endif (WINDOWS)

View File

@ -1,20 +0,0 @@
# -*- cmake -*-
include(Variables)
include(FreeType)
include(GLH)
set(LLRENDER_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llrender
${GLH_INCLUDE_DIR}
)
if (BUILD_HEADLESS)
set(LLRENDER_HEADLESS_LIBRARIES
llrenderheadless
)
endif (BUILD_HEADLESS)
set(LLRENDER_LIBRARIES
llrender
)

View File

@ -37,40 +37,3 @@ macro(ll_deploy_sharedlibs_command target_exe)
endif(NOT DARWIN) endif(NOT DARWIN)
endmacro(ll_deploy_sharedlibs_command) endmacro(ll_deploy_sharedlibs_command)
# ll_stage_sharedlib
# Performs config and adds a copy command for a sharedlib target.
macro(ll_stage_sharedlib DSO_TARGET)
# target gets written to the DLL staging directory.
# Also this directory is shared with RunBuildTest.cmake, y'know, for the tests.
set_target_properties(${DSO_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${SHARED_LIB_STAGING_DIR})
if(NOT WINDOWS)
get_target_property(DSO_PATH ${DSO_TARGET} LOCATION)
get_filename_component(DSO_FILE ${DSO_PATH} NAME)
if(DARWIN)
set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources)
else(DARWIN)
set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR})
endif(DARWIN)
# *TODO - maybe make this a symbolic link? -brad
add_custom_command(
TARGET ${DSO_TARGET} POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS
-E
copy_if_different
${DSO_PATH}
${SHARED_LIB_STAGING_DIR_CONFIG}/${DSO_FILE}
COMMENT "Copying llcommon to the staging folder."
)
endif(NOT WINDOWS)
if (DARWIN)
set_target_properties(${DSO_TARGET} PROPERTIES
BUILD_WITH_INSTALL_RPATH 1
INSTALL_NAME_DIR "@executable_path/../Resources"
)
endif(DARWIN)
endmacro(ll_stage_sharedlib)

View File

@ -1,7 +0,0 @@
# -*- cmake -*-
set(LLUI_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llui
)
set(LLUI_LIBRARIES llui)

View File

@ -4,39 +4,19 @@ include(Variables)
include(GLEXT) include(GLEXT)
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) include_guard()
include(FindSDL) add_library( ll::SDL INTERFACE IMPORTED )
# This should be done by FindSDL. Sigh.
mark_as_advanced(
SDLMAIN_LIBRARY
SDL_INCLUDE_DIR
SDL_LIBRARY
)
else (USESYSTEMLIBS)
if (LINUX) if (LINUX)
#Must come first as use_system_binary can exit this file early
target_compile_definitions( ll::SDL INTERFACE LL_SDL=1)
use_system_binary(SDL)
use_prebuilt_binary(SDL) use_prebuilt_binary(SDL)
set (SDL_FOUND TRUE)
set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/i686-linux) target_include_directories( ll::SDL SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
set (SDL_LIBRARY SDL directfb fusion direct X11) target_link_libraries( ll::SDL INTERFACE SDL directfb fusion direct X11)
endif (LINUX) endif (LINUX)
endif (USESYSTEMLIBS)
if (SDL_FOUND)
include_directories(${SDL_INCLUDE_DIR})
endif (SDL_FOUND)
set(LLWINDOW_INCLUDE_DIRS
${GLEXT_INCLUDE_DIR}
${LIBS_OPEN_DIR}/llwindow
)
if (BUILD_HEADLESS)
set(LLWINDOW_HEADLESS_LIBRARIES
llwindowheadless
)
endif (BUILD_HEADLESS)
set(LLWINDOW_LIBRARIES
llwindow
)

View File

@ -1,14 +0,0 @@
# -*- cmake -*-
include(Boost)
include(EXPAT)
set(LLXML_INCLUDE_DIRS
${LIBS_OPEN_DIR}/llxml
${EXPAT_INCLUDE_DIRS}
)
set(LLXML_SYSTEM_INCLUDE_DIRS
${Boost_INCLUDE_DIRS}
)
set(LLXML_LIBRARIES llxml)

View File

@ -2,29 +2,26 @@
include(Linking) include(Linking)
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) include_guard()
set(LIBVLCPLUGIN OFF CACHE BOOL add_library( ll::libvlc INTERFACE IMPORTED )
"LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
else (USESYSTEMLIBS)
use_prebuilt_binary(vlc-bin) use_prebuilt_binary(vlc-bin)
set(LIBVLCPLUGIN ON CACHE BOOL set(LIBVLCPLUGIN ON CACHE BOOL
"LIBVLCPLUGIN support for the llplugin/llmedia test apps.") "LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
set(VLC_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/vlc)
endif (USESYSTEMLIBS)
if (WINDOWS) if (WINDOWS)
set(VLC_PLUGIN_LIBRARIES target_link_libraries( ll::libvlc INTERFACE
libvlc.lib libvlc.lib
libvlccore.lib libvlccore.lib
) )
elseif (DARWIN) elseif (DARWIN)
set(VLC_PLUGIN_LIBRARIES target_link_libraries( ll::libvlc INTERFACE
libvlc.dylib libvlc.dylib
libvlccore.dylib libvlccore.dylib
) )
elseif (LINUX) elseif (LINUX)
# Specify a full path to make sure we get a static link # Specify a full path to make sure we get a static link
set(VLC_PLUGIN_LIBRARIES target_link_libraries( ll::libvlc INTERFACE
${LIBS_PREBUILT_DIR}/lib/libvlc.a ${LIBS_PREBUILT_DIR}/lib/libvlc.a
${LIBS_PREBUILT_DIR}/lib/libvlccore.a ${LIBS_PREBUILT_DIR}/lib/libvlccore.a
) )

View File

@ -1,24 +1,34 @@
# -*- cmake -*- # -*- cmake -*-
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED) include_guard()
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
include(Variables) include(Variables)
set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib) set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib)
set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins) set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins)
set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release) set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)
set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug) set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)
if (WINDOWS) if (WINDOWS OR DARWIN )
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs) # Kludge for older cmake versions, 3.20+ is needed to use a genex in add_custom_command( OUTPUT <var> ... )
set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs) # Using this will work okay-ish, as Debug is not supported anyway. But for property multi config and also
# ninja support the genex version is preferred.
if(${CMAKE_VERSION} VERSION_LESS "3.20.0")
if(CMAKE_BUILD_TYPE MATCHES Release)
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/Release)
elseif (CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/RelWithDebInfo)
endif()
else()
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>)
endif()
if( DARWIN )
set( SHARED_LIB_STAGING_DIR ${SHARED_LIB_STAGING_DIR}/Resources)
endif()
set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>)
elseif (LINUX) elseif (LINUX)
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/lib) set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/lib)
set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin) set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin)
elseif (DARWIN) endif ()
set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
set(EXE_STAGING_DIR "${CMAKE_BINARY_DIR}/sharedlibs")
endif (WINDOWS)
# Autobuild packages must provide 'release' versions of libraries, but may provide versions for # Autobuild packages must provide 'release' versions of libraries, but may provide versions for
# specific build types. AUTOBUILD_LIBS_INSTALL_DIRS lists first the build type directory and then # specific build types. AUTOBUILD_LIBS_INSTALL_DIRS lists first the build type directory and then
@ -27,35 +37,19 @@ endif (WINDOWS)
# windows) and CMAKE_BUILD_TYPE on Makefile based generators (like linux). The reason for this is # windows) and CMAKE_BUILD_TYPE on Makefile based generators (like linux). The reason for this is
# that CMAKE_BUILD_TYPE is essentially meaningless at configuration time for IDE generators and # that CMAKE_BUILD_TYPE is essentially meaningless at configuration time for IDE generators and
# CMAKE_CFG_INTDIR is meaningless at build time for Makefile generators # CMAKE_CFG_INTDIR is meaningless at build time for Makefile generators
if(WINDOWS OR DARWIN)
# the cmake xcode and VS generators implicitly append ${CMAKE_CFG_INTDIR} to the library paths for us
# fortunately both windows and darwin are case insensitive filesystems so this works.
set(AUTOBUILD_LIBS_INSTALL_DIRS "${AUTOBUILD_INSTALL_DIR}/lib/")
else(WINDOWS OR DARWIN)
# else block is for linux and any other makefile based generators
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWER)
set(AUTOBUILD_LIBS_INSTALL_DIRS ${AUTOBUILD_INSTALL_DIR}/lib/${CMAKE_BUILD_TYPE_LOWER})
endif(WINDOWS OR DARWIN)
if (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release") link_directories(${AUTOBUILD_INSTALL_DIR}/lib/$<LOWER_CASE:$<CONFIG>>)
# When we're building something other than Release, append the link_directories(${AUTOBUILD_INSTALL_DIR}/lib/release)
# packages/lib/release directory to deal with autobuild packages that don't
# provide (e.g.) lib/debug libraries.
list(APPEND AUTOBUILD_LIBS_INSTALL_DIRS ${ARCH_PREBUILT_DIRS_RELEASE})
endif (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release")
link_directories(${AUTOBUILD_LIBS_INSTALL_DIRS}) add_library( ll::oslibraries INTERFACE IMPORTED )
if (LINUX) if (LINUX)
set(DL_LIBRARY dl) target_link_libraries( ll::oslibraries INTERFACE
set(PTHREAD_LIBRARY pthread) dl
else (LINUX) pthread
set(DL_LIBRARY "") rt)
set(PTHREAD_LIBRARY "") elseif (WINDOWS)
endif (LINUX) target_link_libraries( ll::oslibraries INTERFACE
if (WINDOWS)
set(WINDOWS_LIBRARIES
advapi32 advapi32
shell32 shell32
ws2_32 ws2_32
@ -68,11 +62,29 @@ if (WINDOWS)
user32 user32
ole32 ole32
dbghelp dbghelp
legacy_stdio_definitions
) )
else (WINDOWS) else()
set(WINDOWS_LIBRARIES "") include(CMakeFindFrameworks)
endif (WINDOWS) find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_library(CARBON_LIBRARY Carbon)
find_library(COCOA_LIBRARY Cocoa)
find_library(IOKIT_LIBRARY IOKit)
find_library(AGL_LIBRARY AGL)
find_library(APPKIT_LIBRARY AppKit)
find_library(COREAUDIO_LIBRARY CoreAudio)
target_link_libraries( ll::oslibraries INTERFACE
${COCOA_LIBRARY}
${IOKIT_LIBRARY}
${COREFOUNDATION_LIBRARY}
${CARBON_LIBRARY}
${AGL_LIBRARY}
${APPKIT_LIBRARY}
${COREAUDIO_LIBRARY}
)
endif()
mark_as_advanced(DL_LIBRARY PTHREAD_LIBRARY WINDOWS_LIBRARIES)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)

View File

@ -1,16 +0,0 @@
# -*- cmake -*-
include(Linking)
include(Prebuilt)
use_prebuilt_binary(meshoptimizer)
if (WINDOWS)
set(MESHOPTIMIZER_LIBRARIES meshoptimizer.lib)
elseif (LINUX)
set(MESHOPTIMIZER_LIBRARIES meshoptimizer.o)
elseif (DARWIN)
set(MESHOPTIMIZER_LIBRARIES libmeshoptimizer.a)
endif (WINDOWS)
set(MESHOPTIMIZER_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/meshoptimizer)

View File

@ -1,8 +0,0 @@
# -*- cmake -*-
set(MEDIA_PLUGIN_BASE_INCLUDE_DIRS
${LIBS_OPEN_DIR}/media_plugins/base/
)
set(MEDIA_PLUGIN_BASE_LIBRARIES media_plugin_base)

View File

@ -0,0 +1,20 @@
# -*- cmake -*-
include(Linking)
include(Prebuilt)
include_guard()
add_library( ll::meshoptimizer INTERFACE IMPORTED )
use_system_binary(meshoptimizer)
use_prebuilt_binary(meshoptimizer)
if (WINDOWS)
target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib)
elseif (LINUX)
target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.o)
elseif (DARWIN)
target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)
endif (WINDOWS)
target_include_directories( ll::meshoptimizer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/meshoptimizer)

View File

@ -3,11 +3,10 @@ include(Prebuilt)
set(NDOF ON CACHE BOOL "Use NDOF space navigator joystick library.") set(NDOF ON CACHE BOOL "Use NDOF space navigator joystick library.")
include_guard()
add_library( ll::ndof INTERFACE IMPORTED )
if (NDOF) if (NDOF)
if (USESYSTEMLIBS)
set(NDOF_FIND_REQUIRED ON)
include(FindNDOF)
else (USESYSTEMLIBS)
if (WINDOWS OR DARWIN) if (WINDOWS OR DARWIN)
use_prebuilt_binary(libndofdev) use_prebuilt_binary(libndofdev)
elseif (LINUX) elseif (LINUX)
@ -15,22 +14,11 @@ if (NDOF)
endif (WINDOWS OR DARWIN) endif (WINDOWS OR DARWIN)
if (WINDOWS) if (WINDOWS)
set(NDOF_LIBRARY libndofdev) target_link_libraries( ll::ndof INTERFACE libndofdev)
elseif (DARWIN OR LINUX) elseif (DARWIN OR LINUX)
set(NDOF_LIBRARY ndofdev) target_link_libraries( ll::ndof INTERFACE ndofdev)
endif (WINDOWS) endif (WINDOWS)
target_compile_definitions( ll::ndof INTERFACE LIB_NDOF=1)
set(NDOF_INCLUDE_DIR ${ARCH_PREBUILT_DIRS}/include/ndofdev)
set(NDOF_FOUND 1)
endif (USESYSTEMLIBS)
endif (NDOF) endif (NDOF)
if (NDOF_FOUND)
add_definitions(-DLIB_NDOF=1)
include_directories(${NDOF_INCLUDE_DIR})
else (NDOF_FOUND)
message(STATUS "Building without N-DoF joystick support")
set(NDOF_INCLUDE_DIR "")
set(NDOF_LIBRARY "")
endif (NDOF_FOUND)

View File

@ -1,20 +1,16 @@
include(Linking)
include(Prebuilt) include(Prebuilt)
set(NGHTTP2_FIND_QUIETLY ON) include_guard()
set(NGHTTP2_FIND_REQUIRED ON) add_library( ll::nghttp2 INTERFACE IMPORTED )
if (USESYSTEMLIBS) use_system_binary(nghttp2)
include(FindNGHTTP2)
else (USESYSTEMLIBS)
use_prebuilt_binary(nghttp2) use_prebuilt_binary(nghttp2)
if (WINDOWS) if (WINDOWS)
set(NGHTTP2_LIBRARIES target_link_libraries( ll::nghttp2 INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/nghttp2.lib)
${ARCH_PREBUILT_DIRS_RELEASE}/nghttp2.lib
)
elseif (DARWIN) elseif (DARWIN)
set(NGHTTP2_LIBRARIES libnghttp2.dylib) target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.dylib)
else (WINDOWS) else (WINDOWS)
set(NGHTTP2_LIBRARIES libnghttp2.a) target_link_libraries( ll::nghttp2 INTERFACE libnghttp2.a )
endif (WINDOWS) endif (WINDOWS)
set(NGHTTP2_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/nghttp2) target_include_directories( ll::nghttp2 SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/nghttp2)
endif (USESYSTEMLIBS)

View File

@ -5,12 +5,9 @@ set(NVAPI ON CACHE BOOL "Use NVAPI.")
if (NVAPI) if (NVAPI)
if (WINDOWS) if (WINDOWS)
add_library( ll::nvapi INTERFACE IMPORTED )
target_link_libraries( ll::nvapi INTERFACE nvapi)
use_prebuilt_binary(nvapi) use_prebuilt_binary(nvapi)
set(NVAPI_LIBRARY nvapi)
else (WINDOWS)
set(NVAPI_LIBRARY "")
endif (WINDOWS) endif (WINDOWS)
else (NVAPI)
set(NVAPI_LIBRARY "")
endif (NVAPI) endif (NVAPI)

View File

@ -2,31 +2,37 @@
include(Linking) include(Linking)
include(Prebuilt) include(Prebuilt)
if (LINUX) include_guard()
set(OPENAL ON CACHE BOOL "Enable OpenAL")
else (LINUX)
set(OPENAL OFF CACHE BOOL "Enable OpenAL")
endif (LINUX)
# ND: Turn this off by default, the openal code in the viewer isn't very well maintained, seems
# to have memory leaks, has no option to play music streams
# It probably makes sense to to completely remove it
set(USE_OPENAL OFF CACHE BOOL "Enable OpenAL")
# ND: To streamline arguments passed, switch from OPENAL to USE_OPENAL
# To not break all old build scripts convert old arguments but warn about it
if(OPENAL) if(OPENAL)
set(OPENAL_LIB_INCLUDE_DIRS "${LIBS_PREBUILT_DIR}/include/AL") message( WARNING "Use of the OPENAL argument is deprecated, please switch to USE_OPENAL")
if (USESYSTEMLIBS) set(USE_OPENAL ${OPENAL})
include(FindPkgConfig) endif()
include(FindOpenAL)
pkg_check_modules(OPENAL_LIB REQUIRED openal) if (USE_OPENAL)
pkg_check_modules(FREEALUT_LIB REQUIRED freealut) add_library( ll::openal INTERFACE IMPORTED )
else (USESYSTEMLIBS) target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL")
target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
use_prebuilt_binary(openal) use_prebuilt_binary(openal)
endif (USESYSTEMLIBS)
if(WINDOWS) if(WINDOWS)
set(OPENAL_LIBRARIES target_link_libraries( ll::openal INTERFACE
OpenAL32 OpenAL32
alut alut
) )
else() elseif(LINUX)
set(OPENAL_LIBRARIES target_link_libraries( ll::openal INTERFACE
openal openal
alut alut
) )
else()
message(FATAL_ERROR "OpenAL is not available for this platform")
endif()
endif () endif ()
endif (OPENAL)

View File

@ -2,11 +2,5 @@
include(Variables) include(Variables)
include(Prebuilt) include(Prebuilt)
if (BUILD_HEADLESS)
SET(OPENGL_glu_LIBRARY GLU)
SET(OPENGL_HEADLESS_LIBRARIES OSMesa16 dl GLU)
endif (BUILD_HEADLESS)
include(FindOpenGL) include(FindOpenGL)

View File

@ -1,14 +1,11 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(OPENJPEG_FIND_QUIETLY ON) include_guard()
set(OPENJPEG_FIND_REQUIRED ON) add_library( ll::openjpeg INTERFACE IMPORTED )
if (USESYSTEMLIBS) use_system_binary(openjpeg)
include(FindOpenJPEG)
else (USESYSTEMLIBS)
use_prebuilt_binary(openjpeg) use_prebuilt_binary(openjpeg)
set(OPENJPEG_LIBRARIES openjp2) target_link_libraries(ll::openjpeg INTERFACE openjp2 )
set(OPENJPEG_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/openjpeg) target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/openjpeg)
endif (USESYSTEMLIBS)

View File

@ -1,23 +1,17 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(OpenSSL_FIND_QUIETLY ON) include_guard()
set(OpenSSL_FIND_REQUIRED ON) add_library( ll::openssl INTERFACE IMPORTED )
if (USESYSTEMLIBS) use_system_binary(openssl)
include(FindOpenSSL)
else (USESYSTEMLIBS)
use_prebuilt_binary(openssl) use_prebuilt_binary(openssl)
if (WINDOWS) if (WINDOWS)
set(OPENSSL_LIBRARIES libssl libcrypto) target_link_libraries(ll::openssl INTERFACE libssl libcrypto)
else (WINDOWS) elseif (LINUX)
set(OPENSSL_LIBRARIES ssl crypto) target_link_libraries(ll::openssl INTERFACE ssl crypto dl)
else()
target_link_libraries(ll::openssl INTERFACE ssl crypto)
endif (WINDOWS) endif (WINDOWS)
set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) target_include_directories( ll::openssl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
endif (USESYSTEMLIBS)
if (LINUX)
set(CRYPTO_LIBRARIES crypto dl)
elseif (DARWIN)
set(CRYPTO_LIBRARIES crypto)
endif (LINUX)

View File

@ -1,34 +1,14 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(PNG_FIND_QUIETLY ON) include_guard()
set(PNG_FIND_REQUIRED ON) add_library( ll::libpng INTERFACE IMPORTED )
if (USESYSTEMLIBS) use_system_binary(libpng)
include(FindPNG)
else (USESYSTEMLIBS)
use_prebuilt_binary(libpng) use_prebuilt_binary(libpng)
if (WINDOWS) if (WINDOWS)
set(PNG_LIBRARIES libpng16) target_link_libraries(ll::libpng INTERFACE libpng16)
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)
elseif(DARWIN)
set(PNG_LIBRARIES png16)
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)
else() else()
# target_link_libraries(ll::libpng INTERFACE png16 )
# When we have updated static libraries in competition with older
# shared libraries and we want the former to win, we need to do some
# extra work. The *_PRELOAD_ARCHIVES settings are invoked early
# and will pull in the entire archive to the binary giving it
# priority in symbol resolution. Beware of cmake moving the
# achive load itself to another place on the link command line. If
# that happens, you can try something like -Wl,-lpng16 here to hide
# the archive. Also be aware that the linker will not tolerate a
# second whole-archive load of the archive. See viewer's
# CMakeLists.txt for more information.
#
set(PNG_PRELOAD_ARCHIVES -Wl,--whole-archive png16 -Wl,--no-whole-archive)
set(PNG_LIBRARIES png16)
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)
endif() endif()
endif (USESYSTEMLIBS) target_include_directories( ll::libpng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/libpng16)

View File

@ -1,7 +1,9 @@
# -*- cmake -*- # -*- cmake -*-
add_library( ll::pluginlibraries INTERFACE IMPORTED )
if (WINDOWS) if (WINDOWS)
set(PLUGIN_API_WINDOWS_LIBRARIES target_link_libraries( ll::pluginlibraries INTERFACE
wsock32 wsock32
ws2_32 ws2_32
psapi psapi
@ -9,8 +11,6 @@ if (WINDOWS)
advapi32 advapi32
user32 user32
) )
else (WINDOWS)
set(PLUGIN_API_WINDOWS_LIBRARIES "")
endif (WINDOWS) endif (WINDOWS)

View File

@ -1,7 +1,5 @@
# -*- cmake -*- # -*- cmake -*-
include_guard()
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
include(FindAutobuild) include(FindAutobuild)
if(INSTALL_PROPRIETARY) if(INSTALL_PROPRIETARY)
@ -25,11 +23,10 @@ endif ("${CMAKE_SOURCE_DIR}/../autobuild.xml" IS_NEWER_THAN "${PREBUILD_TRACKING
# of previous attempts is serialized in the file # of previous attempts is serialized in the file
# ${PREBUILD_TRACKING_DIR}/${_binary}_installed) # ${PREBUILD_TRACKING_DIR}/${_binary}_installed)
macro (use_prebuilt_binary _binary) macro (use_prebuilt_binary _binary)
if (NOT DEFINED USESYSTEMLIBS_${_binary}) if( NOT DEFINED ${_binary}_installed )
set(USESYSTEMLIBS_${_binary} ${USESYSTEMLIBS}) set( ${_binary}_installed "")
endif (NOT DEFINED USESYSTEMLIBS_${_binary}) endif()
if (NOT USESYSTEMLIBS_${_binary})
if("${${_binary}_installed}" STREQUAL "" AND EXISTS "${PREBUILD_TRACKING_DIR}/${_binary}_installed") if("${${_binary}_installed}" STREQUAL "" AND EXISTS "${PREBUILD_TRACKING_DIR}/${_binary}_installed")
file(READ ${PREBUILD_TRACKING_DIR}/${_binary}_installed "${_binary}_installed") file(READ ${PREBUILD_TRACKING_DIR}/${_binary}_installed "${_binary}_installed")
if(DEBUG_PREBUILT) if(DEBUG_PREBUILT)
@ -58,7 +55,18 @@ macro (use_prebuilt_binary _binary)
"Failed to download or unpack prebuilt '${_binary}'." "Failed to download or unpack prebuilt '${_binary}'."
" Process returned ${${_binary}_installed}.") " Process returned ${${_binary}_installed}.")
endif (NOT ${_binary}_installed EQUAL 0) endif (NOT ${_binary}_installed EQUAL 0)
endif (NOT USESYSTEMLIBS_${_binary})
endmacro (use_prebuilt_binary _binary) endmacro (use_prebuilt_binary _binary)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED) #Sadly we need a macro here, otherwise the return() will not properly work
macro ( use_system_binary package )
if( USE_CONAN )
target_link_libraries( ll::${package} INTERFACE CONAN_PKG::${package} )
foreach( extra_pkg "${ARGN}" )
if( extra_pkg )
target_link_libraries( ll::${package} INTERFACE CONAN_PKG::${extra_pkg} )
endif()
endforeach()
return()
endif()
endmacro()

View File

@ -1,28 +1,4 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(PULSEAUDIO OFF CACHE BOOL "Build with PulseAudio support, if available.") message( FATAL_ERROR "Pulseaudio cmake file is broken" )
if (PULSEAUDIO)
if (USESYSTEMLIBS)
include(FindPkgConfig)
pkg_check_modules(PULSEAUDIO libpulse)
elseif (LINUX)
use_prebuilt_binary(pulseaudio)
set(PULSEAUDIO_FOUND ON FORCE BOOL)
set(PULSEAUDIO_INCLUDE_DIRS
${LIBS_PREBUILT_DIR}/include
)
# We don't need to explicitly link against pulseaudio itself, because
# the viewer probes for the system's copy at runtime.
set(PULSEAUDIO_LIBRARIES
# none needed!
)
endif (USESYSTEMLIBS)
endif (PULSEAUDIO)
if (PULSEAUDIO_FOUND)
add_definitions(-DLL_PULSEAUDIO_ENABLED=1)
endif (PULSEAUDIO_FOUND)

View File

@ -5,32 +5,49 @@ set(PYTHONINTERP_FOUND)
if (WINDOWS) if (WINDOWS)
# On Windows, explicitly avoid Cygwin Python. # On Windows, explicitly avoid Cygwin Python.
find_program(PYTHON_EXECUTABLE # if the user has their own version of Python installed, prefer that
NAMES python.exe foreach(hive HKEY_CURRENT_USER HKEY_LOCAL_MACHINE)
# prefer more recent Python versions to older ones, if multiple versions
# are installed
foreach(pyver 3.11 3.10 3.9 3.8 3.7)
list(APPEND regpaths "[${hive}\\SOFTWARE\\Python\\PythonCore\\${pyver}\\InstallPath]")
endforeach()
endforeach()
# TODO: This logic has the disadvantage that if you have multiple versions
# of Python installed, the selected path won't necessarily be the newest -
# e.g. this GLOB will prefer Python310 to Python311. But since pymaybe is
# checked AFTER the registry entries, this will only surface as a problem if
# no installed Python appears in the registry.
file(GLOB pymaybe
"$ENV{PROGRAMFILES}/Python*"
## "$ENV{PROGRAMFILES(X86)}/Python*"
# The Windows environment variable is in fact as shown above, but CMake
# disallows querying an environment variable containing parentheses -
# thanks, Windows. Fudge by just appending " (x86)" to $PROGRAMFILES and
# hoping for the best.
"$ENV{PROGRAMFILES} (x86)/Python*"
"c:/Python*")
find_program(python
NAMES python3.exe python.exe
NO_DEFAULT_PATH # added so that cmake does not find cygwin python NO_DEFAULT_PATH # added so that cmake does not find cygwin python
PATHS PATHS
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.7\\InstallPath] ${regpaths}
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.8\\InstallPath] ${pymaybe}
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.9\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.10\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.11\\InstallPath]
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.7\\InstallPath]
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.8\\InstallPath]
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.9\\InstallPath]
[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.10\\InstallPath]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.11\\InstallPath]
) )
include(FindPythonInterp) include(FindPythonInterp)
else() else()
find_program(PYTHON_EXECUTABLE python3) find_program(python python3)
if (PYTHON_EXECUTABLE) if (python)
set(PYTHONINTERP_FOUND ON) set(PYTHONINTERP_FOUND ON)
endif (PYTHON_EXECUTABLE) endif (python)
endif (WINDOWS) endif (WINDOWS)
if (NOT PYTHON_EXECUTABLE) if (NOT python)
message(FATAL_ERROR "No Python interpreter found") message(FATAL_ERROR "No Python interpreter found")
endif (NOT PYTHON_EXECUTABLE) endif (NOT python)
set(PYTHON_EXECUTABLE "${python}" CACHE FILEPATH "Python interpreter for builds")
mark_as_advanced(PYTHON_EXECUTABLE) mark_as_advanced(PYTHON_EXECUTABLE)

View File

@ -1,29 +1,18 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
include_guard()
add_library( ll::tracy INTERFACE IMPORTED )
set(USE_TRACY OFF CACHE BOOL "Use Tracy profiler.") set(USE_TRACY OFF CACHE BOOL "Use Tracy profiler.")
if (USE_TRACY) if (USE_TRACY)
set(TRACY_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/tracy) use_system_binary(tracy)
# See: indra/llcommon/llprofiler.h
add_definitions(-DLL_PROFILER_CONFIGURATION=3)
use_prebuilt_binary(tracy) use_prebuilt_binary(tracy)
if (WINDOWS) target_include_directories( ll::tracy SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/tracy)
MESSAGE(STATUS "Including Tracy for Windows: '${TRACY_INCLUDE_DIR}'")
endif (WINDOWS)
if (DARWIN) # See: indra/llcommon/llprofiler.h
MESSAGE(STATUS "Including Tracy for Darwin: '${TRACY_INCLUDE_DIR}'") target_compile_definitions(ll::tracy INTERFACE LL_PROFILER_CONFIGURATION=3 )
endif (DARWIN)
if (LINUX)
MESSAGE(STATUS "Including Tracy for Linux: '${TRACY_INCLUDE_DIR}'")
endif (LINUX)
else (USE_TRACY)
# Tracy.cmake should not set LLCOMMON_INCLUDE_DIRS, let LLCommon.cmake do that
set(TRACY_INCLUDE_DIR "")
set(TRACY_LIBRARY "")
endif (USE_TRACY) endif (USE_TRACY)

View File

@ -1,6 +1,4 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if (NOT USESYSTEMLIBS)
use_prebuilt_binary(tut) use_prebuilt_binary(tut)
endif(NOT USESYSTEMLIBS)

View File

@ -2,42 +2,18 @@
include(Prebuilt) include(Prebuilt)
include(FreeType) include(FreeType)
if (USESYSTEMLIBS) add_library( ll::uilibraries INTERFACE IMPORTED )
include(FindPkgConfig)
if (LINUX) if (LINUX)
set(PKGCONFIG_PACKAGES target_compile_definitions(ll::uilibraries INTERFACE LL_GTK=1 LL_X11=1 )
atk
cairo
gdk-2.0
gdk-pixbuf-2.0
glib-2.0
gmodule-2.0
gtk+-2.0
gthread-2.0
libpng
pango
pangoft2
pangox
pangoxft
sdl
)
endif (LINUX)
foreach(pkg ${PKGCONFIG_PACKAGES}) if( USE_CONAN )
pkg_check_modules(${pkg} REQUIRED ${pkg}) target_link_libraries( ll::uilibraries INTERFACE CONAN_PKG::gtk )
include_directories(${${pkg}_INCLUDE_DIRS}) return()
link_directories(${${pkg}_LIBRARY_DIRS}) endif()
list(APPEND UI_LIBRARIES ${${pkg}_LIBRARIES})
add_definitions(${${pkg}_CFLAGS_OTHERS})
endforeach(pkg)
else (USESYSTEMLIBS)
if (LINUX)
use_prebuilt_binary(gtk-atk-pango-glib) use_prebuilt_binary(gtk-atk-pango-glib)
endif (LINUX)
if (LINUX) target_link_libraries( ll::uilibraries INTERFACE
set(UI_LIBRARIES
atk-1.0 atk-1.0
gdk-x11-2.0 gdk-x11-2.0
gdk_pixbuf-2.0 gdk_pixbuf-2.0
@ -51,19 +27,28 @@ else (USESYSTEMLIBS)
pangoft2-1.0 pangoft2-1.0
pangox-1.0 pangox-1.0
pangoxft-1.0 pangoxft-1.0
${FREETYPE_LIBRARIES} Xinerama
ll::freetype
) )
endif (LINUX) endif (LINUX)
if( WINDOWS )
target_link_libraries( ll::uilibraries INTERFACE
opengl32
comdlg32
dxguid
kernel32
odbc32
odbccp32
oleaut32
shell32
Vfw32
wer
winspool
imm32
)
endif()
include_directories ( target_include_directories( ll::uilibraries SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include
${LIBS_PREBUILT_DIR}/include ${LIBS_PREBUILT_DIR}/include
) )
foreach(include ${${LL_ARCH}_INCLUDES})
include_directories(${LIBS_PREBUILT_DIR}/include/${include})
endforeach(include)
endif (USESYSTEMLIBS)
if (LINUX)
add_definitions(-DLL_GTK=1 -DLL_X11=1)
endif (LINUX)

View File

@ -1,35 +1,19 @@
# -*- cmake -*- # -*- cmake -*-
set(URIPARSER_FIND_QUIETLY ON) include_guard()
set(URIPARSER_FIND_REQUIRED ON)
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) add_library( ll::uriparser INTERFACE IMPORTED )
include(FindURIPARSER)
else (USESYSTEMLIBS) use_system_binary( uriparser )
use_prebuilt_binary(uriparser) use_prebuilt_binary(uriparser)
if (WINDOWS) if (WINDOWS)
set(URIPARSER_LIBRARIES target_link_libraries( ll::uriparser INTERFACE uriparser)
debug uriparserd
optimized uriparser)
elseif (LINUX) elseif (LINUX)
# target_link_libraries( ll::uriparser INTERFACE uriparser)
# When we have updated static libraries in competition with older
# shared libraries and we want the former to win, we need to do some
# extra work. The *_PRELOAD_ARCHIVES settings are invoked early
# and will pull in the entire archive to the binary giving it.
# priority in symbol resolution. Beware of cmake moving the
# achive load itself to another place on the link command line. If
# that happens, you can try something like -Wl,-luriparser here to hide
# the archive. Also be aware that the linker will not tolerate a
# second whole-archive load of the archive. See viewer's
# CMakeLists.txt for more information.
#
set(URIPARSER_PRELOAD_ARCHIVES -Wl,--whole-archive uriparser -Wl,--no-whole-archive)
set(URIPARSER_LIBRARIES uriparser)
elseif (DARWIN) elseif (DARWIN)
set(URIPARSER_LIBRARIES liburiparser.dylib) target_link_libraries( ll::uriparser INTERFACE liburiparser.dylib)
endif (WINDOWS) endif (WINDOWS)
set(URIPARSER_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/uriparser) target_include_directories( ll::uriparser SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/uriparser)
endif (USESYSTEMLIBS)

View File

@ -12,15 +12,18 @@
# Switches set here and in 00-Common.cmake must agree with # Switches set here and in 00-Common.cmake must agree with
# https://bitbucket.org/lindenlab/viewer-build-variables/src/tip/variables # https://bitbucket.org/lindenlab/viewer-build-variables/src/tip/variables
# Reading $LL_BUILD is an attempt to directly use those switches. # Reading $LL_BUILD is an attempt to directly use those switches.
if ("$ENV{LL_BUILD}" STREQUAL "") if ("$ENV{LL_BUILD}" STREQUAL "" AND "${LL_BUILD_ENV}" STREQUAL "" )
message(FATAL_ERROR "Environment variable LL_BUILD must be set") message(FATAL_ERROR "Environment variable LL_BUILD must be set")
elseif("$ENV{LL_BUILD}" STREQUAL "")
set( ENV{LL_BUILD} "${LL_BUILD_ENV}" )
message( "Setting ENV{LL_BUILD} to cached variable ${LL_BUILD_ENV}" )
else()
set( LL_BUILD_ENV "$ENV{LL_BUILD}" CACHE STRING "Save environment" FORCE )
endif () endif ()
include_guard()
# Relative and absolute paths to subtrees. # Relative and absolute paths to subtrees.
if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)
set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
if(NOT DEFINED COMMON_CMAKE_DIR) if(NOT DEFINED COMMON_CMAKE_DIR)
set(COMMON_CMAKE_DIR "${CMAKE_SOURCE_DIR}/cmake") set(COMMON_CMAKE_DIR "${CMAKE_SOURCE_DIR}/cmake")
endif(NOT DEFINED COMMON_CMAKE_DIR) endif(NOT DEFINED COMMON_CMAKE_DIR)
@ -70,39 +73,36 @@ endif (NOT CMAKE_BUILD_TYPE)
# If someone has specified an address size, use that to determine the # If someone has specified an address size, use that to determine the
# architecture. Otherwise, let the architecture specify the address size. # architecture. Otherwise, let the architecture specify the address size.
if (ADDRESS_SIZE EQUAL 32) if (ADDRESS_SIZE EQUAL 32)
#message(STATUS "ADDRESS_SIZE is 32")
set(ARCH i686) set(ARCH i686)
elseif (ADDRESS_SIZE EQUAL 64) elseif (ADDRESS_SIZE EQUAL 64)
#message(STATUS "ADDRESS_SIZE is 64")
set(ARCH x86_64) set(ARCH x86_64)
else (ADDRESS_SIZE EQUAL 32) else (ADDRESS_SIZE EQUAL 32)
#message(STATUS "ADDRESS_SIZE is UNRECOGNIZED: '${ADDRESS_SIZE}'") # Note we cannot use if(DARWIN) here, this variable is set way lower
if( ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
set(ADDRESS_SIZE 64)
set(ARCH x86_64)
else()
# Use Python's platform.machine() since uname -m isn't available everywhere. # Use Python's platform.machine() since uname -m isn't available everywhere.
# Even if you can assume cygwin uname -m, the answer depends on whether # Even if you can assume cygwin uname -m, the answer depends on whether
# you're running 32-bit cygwin or 64-bit cygwin! But even 32-bit Python will # you're running 32-bit cygwin or 64-bit cygwin! But even 32-bit Python will
# report a 64-bit processor. # report a 64-bit processor.
execute_process(COMMAND execute_process(COMMAND
"${PYTHON_EXECUTABLE}" "-c" "${PYTHON_EXECUTABLE}" "-c"
"import platform; print platform.machine()" "import platform; print( platform.machine() )"
OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
# We expect values of the form i386, i686, x86_64, AMD64. string( REGEX MATCH ".*(64)$" RE_MATCH "${ARCH}" )
# In CMake, expressing ARCH.endswith('64') is awkward: if( RE_MATCH AND ${CMAKE_MATCH_1} STREQUAL "64" )
string(LENGTH "${ARCH}" ARCH_LENGTH)
math(EXPR ARCH_LEN_2 "${ARCH_LENGTH} - 2")
string(SUBSTRING "${ARCH}" ${ARCH_LEN_2} 2 ARCH_LAST_2)
if (ARCH_LAST_2 STREQUAL 64)
#message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}")
set(ADDRESS_SIZE 64) set(ADDRESS_SIZE 64)
set(ARCH x86_64)
else() else()
#message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}")
set(ADDRESS_SIZE 32) set(ADDRESS_SIZE 32)
set(ARCH i686)
endif()
endif() endif()
endif (ADDRESS_SIZE EQUAL 32) endif (ADDRESS_SIZE EQUAL 32)
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WINDOWS ON BOOL FORCE) set(WINDOWS ON BOOL FORCE)
set(LL_ARCH ${ARCH}_win32)
set(LL_ARCH_DIR ${ARCH}-win32)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows") endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
@ -129,9 +129,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
include(ConfigurePkgConfig) include(ConfigurePkgConfig)
set(LL_ARCH ${ARCH}_linux)
set(LL_ARCH_DIR ${ARCH}-linux)
if (INSTALL_PROPRIETARY) if (INSTALL_PROPRIETARY)
# Only turn on headless if we can find osmesa libraries. # Only turn on headless if we can find osmesa libraries.
include(FindPkgConfig) include(FindPkgConfig)
@ -206,9 +203,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(CMAKE_OSX_ARCHITECTURES "${ARCH}") set(CMAKE_OSX_ARCHITECTURES "${ARCH}")
string(REPLACE "i686" "i386" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") string(REPLACE "i686" "i386" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
set(LL_ARCH ${ARCH}_darwin)
set(LL_ARCH_DIR universal-darwin)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# Default deploy grid # Default deploy grid
@ -220,10 +214,10 @@ set(ENABLE_SIGNING OFF CACHE BOOL "Enable signing the viewer")
set(SIGNING_IDENTITY "" CACHE STRING "Specifies the signing identity to use, if necessary.") set(SIGNING_IDENTITY "" CACHE STRING "Specifies the signing identity to use, if necessary.")
set(VERSION_BUILD "0" CACHE STRING "Revision number passed in from the outside") set(VERSION_BUILD "0" CACHE STRING "Revision number passed in from the outside")
set(USESYSTEMLIBS OFF CACHE BOOL "Use libraries from your system rather than Linden-supplied prebuilt libraries.")
set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header directives where supported.") set(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Enable use of precompiled header directives where supported.")
source_group("CMake Rules" FILES CMakeLists.txt) source_group("CMake Rules" FILES CMakeLists.txt)
endif(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED) get_property(LL_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)

View File

@ -1,14 +1,22 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if (NOT USESYSTEMLIBS)
if (LINUX) if (LINUX)
use_prebuilt_binary(libuuid) #use_prebuilt_binary(libuuid)
add_library( ll::fontconfig INTERFACE IMPORTED )
if( NOT USE_CONAN )
use_prebuilt_binary(fontconfig) use_prebuilt_binary(fontconfig)
else()
target_link_libraries( ll::fontconfig INTERFACE CONAN_PKG::fontconfig )
endif()
endif (LINUX) endif (LINUX)
if( NOT USE_CONAN )
use_prebuilt_binary(libhunspell) use_prebuilt_binary(libhunspell)
endif()
use_prebuilt_binary(slvoice) use_prebuilt_binary(slvoice)
endif(NOT USESYSTEMLIBS)
use_prebuilt_binary(nanosvg) use_prebuilt_binary(nanosvg)
use_prebuilt_binary(viewer-fonts) use_prebuilt_binary(viewer-fonts)

View File

@ -1,20 +1,11 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
set(XMLRPCEPI_FIND_QUIETLY ON) include_guard()
set(XMLRPCEPI_FIND_REQUIRED ON) add_library( ll::xmlrpc-epi INTERFACE IMPORTED )
use_system_binary( xmlrpc-epi )
if (USESYSTEMLIBS)
include(FindXmlRpcEpi)
else (USESYSTEMLIBS)
use_prebuilt_binary(xmlrpc-epi) use_prebuilt_binary(xmlrpc-epi)
if (WINDOWS) target_link_libraries(ll::xmlrpc-epi INTERFACE xmlrpc-epi )
set(XMLRPCEPI_LIBRARIES target_include_directories( ll::xmlrpc-epi SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
debug xmlrpc-epid
optimized xmlrpc-epi
)
else (WINDOWS)
set(XMLRPCEPI_LIBRARIES xmlrpc-epi)
endif (WINDOWS)
set(XMLRPCEPI_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
endif (USESYSTEMLIBS)

View File

@ -1,35 +1,22 @@
# -*- cmake -*- # -*- cmake -*-
set(ZLIBNG_FIND_QUIETLY ON)
set(ZLIBNG_FIND_REQUIRED ON)
include(Prebuilt) include(Prebuilt)
if (USESYSTEMLIBS) include_guard()
include(FindZLIBNG) add_library( ll::zlib-ng INTERFACE IMPORTED )
else (USESYSTEMLIBS)
if(USE_CONAN )
target_link_libraries( ll::zlib-ng INTERFACE CONAN_PKG::zlib )
return()
endif()
use_prebuilt_binary(zlib-ng) use_prebuilt_binary(zlib-ng)
if (WINDOWS) if (WINDOWS)
set(ZLIBNG_LIBRARIES target_link_libraries( ll::zlib-ng INTERFACE zlib )
debug zlib else()
optimized zlib) target_link_libraries( ll::zlib-ng INTERFACE z )
elseif (LINUX)
#
# When we have updated static libraries in competition with older
# shared libraries and we want the former to win, we need to do some
# extra work. The *_PRELOAD_ARCHIVES settings are invoked early
# and will pull in the entire archive to the binary giving it
# priority in symbol resolution. Beware of cmake moving the
# achive load itself to another place on the link command line. If
# that happens, you can try something like -Wl,-lz here to hide
# the archive. Also be aware that the linker will not tolerate a
# second whole-archive load of the archive. See viewer's
# CMakeLists.txt for more information.
#
set(ZLIBNG_PRELOAD_ARCHIVES -Wl,--whole-archive z -Wl,--no-whole-archive)
set(ZLIBNG_LIBRARIES z)
elseif (DARWIN)
set(ZLIBNG_LIBRARIES z)
endif (WINDOWS) endif (WINDOWS)
set(ZLIBNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib-ng)
endif (USESYSTEMLIBS) if( NOT LINUX )
target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/zlib-ng)
endif()

View File

@ -9,29 +9,33 @@ else (INSTALL_PROPRIETARY)
set(USE_BUGSPLAT OFF CACHE BOOL "Use the BugSplat crash reporting system") set(USE_BUGSPLAT OFF CACHE BOOL "Use the BugSplat crash reporting system")
endif (INSTALL_PROPRIETARY) endif (INSTALL_PROPRIETARY)
include_guard()
add_library( ll::bugsplat INTERFACE IMPORTED )
if (USE_BUGSPLAT) if (USE_BUGSPLAT)
if (NOT USESYSTEMLIBS)
include(Prebuilt) include(Prebuilt)
use_prebuilt_binary(bugsplat) use_prebuilt_binary(bugsplat)
if (WINDOWS) if (WINDOWS)
set(BUGSPLAT_LIBRARIES target_link_libraries( ll::bugsplat INTERFACE
${ARCH_PREBUILT_DIRS_RELEASE}/bugsplat.lib ${ARCH_PREBUILT_DIRS_RELEASE}/bugsplat.lib
) )
target_include_directories( ll::bugsplat SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/bugsplat)
elseif (DARWIN) elseif (DARWIN)
find_library(BUGSPLAT_LIBRARIES BugsplatMac REQUIRED find_library(BUGSPLAT_LIBRARIES BugsplatMac REQUIRED
NO_DEFAULT_PATH PATHS "${ARCH_PREBUILT_DIRS_RELEASE}") NO_DEFAULT_PATH PATHS "${ARCH_PREBUILT_DIRS_RELEASE}")
target_link_libraries( ll::bugsplat INTERFACE
${BUGSPLAT_LIBRARIES}
)
else (WINDOWS) else (WINDOWS)
message(FATAL_ERROR "BugSplat is not supported; add -DUSE_BUGSPLAT=OFF") message(FATAL_ERROR "BugSplat is not supported; add -DUSE_BUGSPLAT=OFF")
endif (WINDOWS) endif (WINDOWS)
else (NOT USESYSTEMLIBS)
set(BUGSPLAT_FIND_QUIETLY ON)
set(BUGSPLAT_FIND_REQUIRED ON)
include(FindBUGSPLAT)
endif (NOT USESYSTEMLIBS)
if( NOT BUGSPLAT_DB )
message( FATAL_ERROR "You need to set BUGSPLAT_DB when setting USE_BUGSPLAT" )
endif()
set_property( TARGET ll::bugsplat APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS LL_BUGSPLAT)
else()
set(BUGSPLAT_DB "" CACHE STRING "BugSplat crash database name") set(BUGSPLAT_DB "" CACHE STRING "BugSplat crash database name")
set(BUGSPLAT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/bugsplat)
set(BUGSPLAT_DEFINE "LL_BUGSPLAT")
endif (USE_BUGSPLAT) endif (USE_BUGSPLAT)

View File

@ -73,7 +73,7 @@ def main(command, arguments=[], libpath=[], vars={}):
if sys.platform == "win32": if sys.platform == "win32":
lpvars = ["PATH"] lpvars = ["PATH"]
elif sys.platform == "darwin": elif sys.platform == "darwin":
lpvars = ["LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH"] lpvars = ["LD_LIBRARY_PATH"] # , "DYLD_LIBRARY_PATH"]
elif sys.platform.startswith("linux"): elif sys.platform.startswith("linux"):
lpvars = ["LD_LIBRARY_PATH"] lpvars = ["LD_LIBRARY_PATH"]
else: else:

View File

@ -12,16 +12,6 @@ include(LLImageJ2COJ)
include(LLKDU) include(LLKDU)
include(LLFileSystem) include(LLFileSystem)
include_directories(
${LLCOMMON_INCLUDE_DIRS}
${LLFILESYSTEM_INCLUDE_DIRS}
${LLIMAGE_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
)
include_directories(SYSTEM
${LLCOMMON_SYSTEM_INCLUDE_DIRS}
)
set(llimage_libtest_SOURCE_FILES set(llimage_libtest_SOURCE_FILES
llimage_libtest.cpp llimage_libtest.cpp
) )
@ -31,9 +21,6 @@ set(llimage_libtest_HEADER_FILES
llimage_libtest.h llimage_libtest.h
) )
set_source_files_properties(${llimage_libtest_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND llimage_libtest_SOURCE_FILES ${llimage_libtest_HEADER_FILES}) list(APPEND llimage_libtest_SOURCE_FILES ${llimage_libtest_HEADER_FILES})
add_executable(llimage_libtest add_executable(llimage_libtest
@ -48,37 +35,21 @@ set_target_properties(llimage_libtest
FALSE FALSE
) )
# OS-specific libraries
if (DARWIN)
include(CMakeFindFrameworks)
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
set(OS_LIBRARIES ${COREFOUNDATION_LIBRARY})
elseif (WINDOWS)
set(OS_LIBRARIES)
elseif (LINUX)
set(OS_LIBRARIES)
else (DARWIN)
message(FATAL_ERROR "Unknown platform")
endif (DARWIN)
# Libraries on which this application depends on # Libraries on which this application depends on
# Sort by high-level to low-level # Sort by high-level to low-level
target_link_libraries(llimage_libtest target_link_libraries(llimage_libtest
${LEGACY_STDIO_LIBS} llcommon
${LLCOMMON_LIBRARIES} llfilesystem
${LLFILESYSTEM_LIBRARIES} llmath
${LLMATH_LIBRARIES} llimage
${LLIMAGE_LIBRARIES} llkdu
${LLKDU_LIBRARIES} llimagej2coj
${KDU_LIBRARY}
${LLIMAGEJ2COJ_LIBRARIES}
${OS_LIBRARIES}
) )
if (DARWIN) if (DARWIN)
# Path inside the app bundle where we'll need to copy libraries # Path inside the app bundle where we'll need to copy libraries
set(LLIMAGE_LIBTEST_DESTINATION_DIR set(LLIMAGE_LIBTEST_DESTINATION_DIR
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llimage_libtest.app/Contents/Resources ${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/llimage_libtest.app/Contents/Resources
) )
# Create the Contents/Resources directory # Create the Contents/Resources directory
add_custom_command( add_custom_command(

View File

@ -22,23 +22,6 @@ include(Hunspell)
include(Linking) include(Linking)
# include(Tut) # include(Tut)
include_directories(
${FREETYPE_INCLUDE_DIRS}
${LLCOMMON_INCLUDE_DIRS}
${LLIMAGE_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
${LLRENDER_INCLUDE_DIRS}
${LLUI_INCLUDE_DIRS}
${LLFILESYSTEM_INCLUDE_DIRS}
${LLWINDOW_INCLUDE_DIRS}
${LLXML_INCLUDE_DIRS}
${LIBS_PREBUILD_DIR}/include/hunspell
)
include_directories(SYSTEM
${LLCOMMON_SYSTEM_INCLUDE_DIRS}
${LLXML_SYSTEM_INCLUDE_DIRS}
)
set(llui_libtest_SOURCE_FILES set(llui_libtest_SOURCE_FILES
llui_libtest.cpp llui_libtest.cpp
llwidgetreg.cpp llwidgetreg.cpp
@ -50,50 +33,26 @@ set(llui_libtest_HEADER_FILES
llwidgetreg.h llwidgetreg.h
) )
set_source_files_properties(${llui_libtest_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND llui_libtest_SOURCE_FILES ${llui_libtest_HEADER_FILES}) list(APPEND llui_libtest_SOURCE_FILES ${llui_libtest_HEADER_FILES})
add_executable(llui_libtest ${llui_libtest_SOURCE_FILES}) add_executable(llui_libtest ${llui_libtest_SOURCE_FILES})
# Link with OS-specific libraries for LLWindow dependency
if (DARWIN)
find_library(COCOA_LIBRARY Cocoa)
find_library(IOKIT_LIBRARY IOKit)
set(OS_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY})
elseif (WINDOWS)
#ll_stack_trace needs this now...
list(APPEND WINDOWS_LIBRARIES dbghelp)
set(OS_LIBRARIES ${WINDOWS_LIBRARIES})
elseif (LINUX)
set(OS_LIBRARIES)
else (DARWIN)
message(FATAL_ERROR "unknown platform")
endif (DARWIN)
# Libraries on which this library depends, needed for Linux builds # Libraries on which this library depends, needed for Linux builds
# Sort by high-level to low-level # Sort by high-level to low-level
target_link_libraries(llui_libtest target_link_libraries(llui_libtest
${LEGACY_STDIO_LIBS}
llui llui
llinventory llinventory
llmessage llmessage
${LLRENDER_LIBRARIES} llrender
${LLIMAGE_LIBRARIES} llimage
${LLKDU_LIBRARIES} llkdu
${KDU_LIBRARY} llimagej2coj
${LLIMAGEJ2COJ_LIBRARIES}
${OS_LIBRARIES}
${GOOGLE_PERFTOOLS_LIBRARIES}
${HUNSPELL_LIBRARY}
) )
if (WINDOWS) if (WINDOWS)
set_target_properties(llui_libtest set_target_properties(llui_libtest
PROPERTIES PROPERTIES
LINK_FLAGS "/NODEFAULTLIB:LIBCMT" LINK_FLAGS "/NODEFAULTLIB:LIBCMT"
LINK_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRT /NODEFAULTLIB:LIBCMTD"
) )
# Copy over OpenJPEG.dll # Copy over OpenJPEG.dll

View File

@ -125,7 +125,7 @@ BASE_ARGUMENTS=[
but not application name (used internally)""", but not application name (used internally)""",
default=None), default=None),
dict(name='configuration', dict(name='configuration',
description="""The build configuration used.""", description="""The build configurations sub directory used.""",
default="Release"), default="Release"),
dict(name='dest', description='Destination directory.', default=DEFAULT_SRCTREE), dict(name='dest', description='Destination directory.', default=DEFAULT_SRCTREE),
dict(name='grid', dict(name='grid',

View File

@ -45,9 +45,6 @@ set(linux_crash_logger_HEADER_FILES
llcrashloggerlinux.h llcrashloggerlinux.h
) )
set_source_files_properties(${linux_crash_logger_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND linux_crash_logger_SOURCE_FILES list(APPEND linux_crash_logger_SOURCE_FILES
${linux_crash_logger_HEADER_FILES} ${linux_crash_logger_HEADER_FILES}
) )
@ -61,19 +58,14 @@ set(LIBRT_LIBRARY rt)
target_link_libraries(linux-crash-logger target_link_libraries(linux-crash-logger
${LLCRASHLOGGER_LIBRARIES} llcrashlogger
${LLFILESYSTEM_LIBRARIES} llfilesystem
${LLXML_LIBRARIES} llxml
${LLMESSAGE_LIBRARIES} llmessage
${LLMATH_LIBRARIES} llmath
${LLCOREHTTP_LIBRARIES} llcorehttp
${LLCOMMON_LIBRARIES} llcommon
${BOOST_FIBER_LIBRARY} ll::uilibraries
${BOOST_CONTEXT_LIBRARY}
${UI_LIBRARIES}
${DB_LIBRARIES}
${FREETYPE_LIBRARIES}
${LIBRT_LIBRARY}
) )
add_custom_target(linux-crash-logger-target ALL add_custom_target(linux-crash-logger-target ALL

View File

@ -4,30 +4,11 @@ project(llappearance)
include(00-Common) include(00-Common)
include(LLCommon) include(LLCommon)
include(LLCharacter)
include(LLImage) include(LLImage)
include(LLInventory)
include(LLMath)
include(LLMessage)
include(LLCoreHttp) include(LLCoreHttp)
include(LLRender)
include(LLFileSystem)
include(LLWindow) include(LLWindow)
include(LLXML)
include(Linking) include(Linking)
include_directories(
${LLCOMMON_INCLUDE_DIRS}
${LLCHARACTER_INCLUDE_DIRS}
${LLIMAGE_INCLUDE_DIRS}
${LLINVENTORY_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
${LLRENDER_INCLUDE_DIRS}
${LLFILESYSTEM_INCLUDE_DIRS}
${LLWINDOW_INCLUDE_DIRS}
${LLXML_INCLUDE_DIRS}
)
set(llappearance_SOURCE_FILES set(llappearance_SOURCE_FILES
llavatarappearance.cpp llavatarappearance.cpp
llavatarjoint.cpp llavatarjoint.cpp
@ -71,41 +52,37 @@ set(llappearance_HEADER_FILES
llavatarappearancedefines.h llavatarappearancedefines.h
) )
set_source_files_properties(${llappearance_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND llappearance_SOURCE_FILES ${llappearance_HEADER_FILES}) list(APPEND llappearance_SOURCE_FILES ${llappearance_HEADER_FILES})
add_library (llappearance ${llappearance_SOURCE_FILES}) add_library (llappearance ${llappearance_SOURCE_FILES})
target_link_libraries(llappearance target_link_libraries(llappearance
${LLCHARACTER_LIBRARIES} llcharacter
${LLINVENTORY_LIBRARIES} llinventory
${LLIMAGE_LIBRARIES} llimage
${LLRENDER_LIBRARIES} llrender
${LLFILESYSTEM_LIBRARIES} llfilesystem
${LLMATH_LIBRARIES} llmath
${LLXML_LIBRARIES} llxml
${LLMATH_LIBRARIES} llmessage
${LLMESSAGE_LIBRARIES} llcorehttp
${LLCOREHTTP_LIBRARIES} llcommon
${LLCOMMON_LIBRARIES}
) )
target_include_directories( llappearance INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
if (BUILD_HEADLESS) if (BUILD_HEADLESS)
add_library (llappearanceheadless ${llappearance_SOURCE_FILES}) add_library (llappearanceheadless ${llappearance_SOURCE_FILES})
target_include_directories( llappearanceheadless INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(llappearanceheadless target_link_libraries(llappearanceheadless
${LLCHARACTER_LIBRARIES} llcharacter
${LLINVENTORY_LIBRARIES} llinventory
${LLIMAGE_LIBRARIES} llimage
${LLRENDERHEADLESS_LIBRARIES} llfilesystem
${LLFILESYSTEM_LIBRARIES} llmath
${LLMATH_LIBRARIES} llxml
${LLXML_LIBRARIES} llmessage
${LLMATH_LIBRARIES} llcorehttp
${LLMESSAGE_LIBRARIES} llcommon
${LLCOREHTTP_LIBRARIES}
${LLCOMMON_LIBRARIES}
) )
endif (BUILD_HEADLESS) endif (BUILD_HEADLESS)

View File

@ -7,23 +7,6 @@ include(LLAudio)
include(FMODSTUDIO) include(FMODSTUDIO)
include(OPENAL) include(OPENAL)
include(LLCommon) include(LLCommon)
include(LLMath)
include(LLMessage)
include(LLFileSystem)
include_directories(
${LLAUDIO_INCLUDE_DIRS}
${LLCOMMON_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
${LLMESSAGE_INCLUDE_DIRS}
${LLFILESYSTEM_INCLUDE_DIRS}
${OGG_INCLUDE_DIRS}
${VORBISENC_INCLUDE_DIRS}
${VORBISFILE_INCLUDE_DIRS}
${VORBIS_INCLUDE_DIRS}
${OPENAL_LIB_INCLUDE_DIRS}
${FREEAULT_LIB_INCLUDE_DIRS}
)
set(llaudio_SOURCE_FILES set(llaudio_SOURCE_FILES
llaudioengine.cpp llaudioengine.cpp
@ -42,10 +25,7 @@ set(llaudio_HEADER_FILES
llwindgen.h llwindgen.h
) )
if (FMODSTUDIO) if (TARGET ll::fmodstudio)
include_directories(
${FMODSTUDIO_INCLUDE_DIR}
)
list(APPEND llaudio_SOURCE_FILES list(APPEND llaudio_SOURCE_FILES
llaudioengine_fmodstudio.cpp llaudioengine_fmodstudio.cpp
lllistener_fmodstudio.cpp lllistener_fmodstudio.cpp
@ -57,13 +37,9 @@ if (FMODSTUDIO)
lllistener_fmodstudio.h lllistener_fmodstudio.h
llstreamingaudio_fmodstudio.h llstreamingaudio_fmodstudio.h
) )
endif (FMODSTUDIO) endif ()
if (OPENAL)
include_directories(
${OPENAL_LIBRARIES}
)
if (TARGET ll::openal)
list(APPEND llaudio_SOURCE_FILES list(APPEND llaudio_SOURCE_FILES
llaudioengine_openal.cpp llaudioengine_openal.cpp
lllistener_openal.cpp lllistener_openal.cpp
@ -73,22 +49,23 @@ if (OPENAL)
llaudioengine_openal.h llaudioengine_openal.h
lllistener_openal.h lllistener_openal.h
) )
endif (OPENAL) endif ()
set_source_files_properties(${llaudio_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND llaudio_SOURCE_FILES ${llaudio_HEADER_FILES}) list(APPEND llaudio_SOURCE_FILES ${llaudio_HEADER_FILES})
add_library (llaudio ${llaudio_SOURCE_FILES}) add_library (llaudio ${llaudio_SOURCE_FILES})
target_link_libraries( target_include_directories( llaudio INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
llaudio target_link_libraries( llaudio
${LLCOMMON_LIBRARIES} llcommon
${LLMATH_LIBRARIES} llmath
${LLMESSAGE_LIBRARIES} llmessage
${LLFILESYSTEM_LIBRARIES} llfilesystem
${VORBISENC_LIBRARIES} ll::vorbis
${VORBISFILE_LIBRARIES}
${VORBIS_LIBRARIES}
${OGG_LIBRARIES}
) )
if( TARGET ll::openal )
target_link_libraries( llaudio ll::openal )
endif()
if( TARGET ll::fmodstudio )
target_link_libraries( llaudio ll::fmodstudio )
endif()

View File

@ -4,22 +4,6 @@ project(llcharacter)
include(00-Common) include(00-Common)
include(LLCommon) include(LLCommon)
include(LLMath)
include(LLMessage)
include(LLFileSystem)
include(LLXML)
include_directories(
${LLCOMMON_INCLUDE_DIRS}
${LLMATH_INCLUDE_DIRS}
${LLMESSAGE_INCLUDE_DIRS}
${LLFILESYSTEM_INCLUDE_DIRS}
${LLXML_INCLUDE_DIRS}
)
include_directories(SYSTEM
${LLCOMMON_SYSTEM_INCLUDE_DIRS}
${LLXML_SYSTEM_INCLUDE_DIRS}
)
set(llcharacter_SOURCE_FILES set(llcharacter_SOURCE_FILES
llanimationstates.cpp llanimationstates.cpp
@ -73,18 +57,16 @@ set(llcharacter_HEADER_FILES
llvisualparam.h llvisualparam.h
) )
set_source_files_properties(${llcharacter_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
list(APPEND llcharacter_SOURCE_FILES ${llcharacter_HEADER_FILES}) list(APPEND llcharacter_SOURCE_FILES ${llcharacter_HEADER_FILES})
add_library (llcharacter ${llcharacter_SOURCE_FILES}) add_library (llcharacter ${llcharacter_SOURCE_FILES})
target_include_directories( llcharacter INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries( target_link_libraries(
llcharacter llcharacter
${LLCOMMON_LIBRARIES} llcommon
${LLMATH_LIBRARIES} llmath
${LLMESSAGE_LIBRARIES} llmessage
${LLFILESYSTEM_LIBRARIES} llfilesystem
${LLXML_LIBRARIES} llxml
) )

View File

@ -1365,7 +1365,6 @@ BOOL LLBVHLoader::serialize(LLDataPacker& dp)
dp.packS32(joint->mNumRotKeys, "num_rot_keys"); dp.packS32(joint->mNumRotKeys, "num_rot_keys");
LLQuaternion::Order order = bvhStringToOrder( joint->mOrder ); LLQuaternion::Order order = bvhStringToOrder( joint->mOrder );
S32 outcount = 0;
S32 frame = 0; S32 frame = 0;
for ( ki = joint->mKeys.begin(); for ( ki = joint->mKeys.begin();
ki != joint->mKeys.end(); ki != joint->mKeys.end();
@ -1433,7 +1432,6 @@ BOOL LLBVHLoader::serialize(LLDataPacker& dp)
dp.packU16(x, "rot_angle_x"); dp.packU16(x, "rot_angle_x");
dp.packU16(y, "rot_angle_y"); dp.packU16(y, "rot_angle_y");
dp.packU16(z, "rot_angle_z"); dp.packU16(z, "rot_angle_z");
outcount++;
frame++; frame++;
} }

View File

@ -15,19 +15,6 @@ include(ZLIBNG)
include(URIPARSER) include(URIPARSER)
include(Tracy) include(Tracy)
include_directories(
${EXPAT_INCLUDE_DIRS}
${LLCOMMON_INCLUDE_DIRS}
${JSONCPP_INCLUDE_DIR}
${ZLIBNG_INCLUDE_DIRS}
${URIPARSER_INCLUDE_DIRS}
${TRACY_INCLUDE_DIR}
)
# add_executable(lltreeiterators lltreeiterators.cpp)
#
# target_link_libraries(lltreeiterators
# ${LLCOMMON_LIBRARIES})
set(llcommon_SOURCE_FILES set(llcommon_SOURCE_FILES
indra_constants.cpp indra_constants.cpp
@ -272,53 +259,26 @@ if (DARWIN)
list(APPEND llcommon_SOURCE_FILES llsys_objc.mm) list(APPEND llcommon_SOURCE_FILES llsys_objc.mm)
endif (DARWIN) endif (DARWIN)
set_source_files_properties(${llcommon_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
if (USE_BUGSPLAT)
set_source_files_properties(${llcommon_SOURCE_FILES}
PROPERTIES COMPILE_DEFINITIONS "${BUGSPLAT_DEFINE}")
endif (USE_BUGSPLAT)
list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES}) list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})
if(LLCOMMON_LINK_SHARED)
add_library (llcommon SHARED ${llcommon_SOURCE_FILES})
if(NOT ADDRESS_SIZE EQUAL 32)
if(WINDOWS)
##add_definitions(/FIXED:NO)
else(WINDOWS) # not windows therefore gcc LINUX and DARWIN
add_definitions(-fPIC)
endif(WINDOWS)
endif(NOT ADDRESS_SIZE EQUAL 32)
if(WINDOWS)
# always generate llcommon.pdb, even for "Release" builds
set_target_properties(llcommon PROPERTIES LINK_FLAGS "/DEBUG")
endif(WINDOWS)
ll_stage_sharedlib(llcommon)
else(LLCOMMON_LINK_SHARED)
add_library (llcommon ${llcommon_SOURCE_FILES}) add_library (llcommon ${llcommon_SOURCE_FILES})
endif(LLCOMMON_LINK_SHARED)
target_link_libraries( target_link_libraries(
llcommon llcommon
${APRUTIL_LIBRARIES}
${APR_LIBRARIES}
${EXPAT_LIBRARIES}
${ICU4C_LIBRARY} ${ICU4C_LIBRARY}
${JSONCPP_LIBRARIES} ll::apr
${ZLIBNG_LIBRARIES} ll::expat
${WINDOWS_LIBRARIES} ll::jsoncpp
${BOOST_FIBER_LIBRARY} ll::zlib-ng
${BOOST_CONTEXT_LIBRARY} ll::boost
${BOOST_PROGRAM_OPTIONS_LIBRARY} ll::uriparser
${BOOST_REGEX_LIBRARY} ll::oslibraries
${BOOST_SYSTEM_LIBRARY} ll::tracy
${GOOGLE_PERFTOOLS_LIBRARIES}
${URIPARSER_LIBRARIES}
${TRACY_LIBRARY}
) )
target_include_directories(llcommon INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(llcommon PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
add_dependencies(llcommon stage_third_party_libs) add_dependencies(llcommon stage_third_party_libs)
if (LL_TESTS) if (LL_TESTS)
@ -329,14 +289,7 @@ if (LL_TESTS)
LL_ADD_PROJECT_UNIT_TESTS(llcommon "${llcommon_TEST_SOURCE_FILES}") LL_ADD_PROJECT_UNIT_TESTS(llcommon "${llcommon_TEST_SOURCE_FILES}")
#set(TEST_DEBUG on) #set(TEST_DEBUG on)
set(test_libs llcommon set(test_libs llcommon)
${LLCOMMON_LIBRARIES}
${WINDOWS_LIBRARIES}
${GOOGLEMOCK_LIBRARIES}
${BOOST_FIBER_LIBRARY}
${BOOST_CONTEXT_LIBRARY}
${BOOST_THREAD_LIBRARY}
${BOOST_SYSTEM_LIBRARY})
LL_ADD_INTEGRATION_TEST(bitpack "" "${test_libs}") LL_ADD_INTEGRATION_TEST(bitpack "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(classic_callback "" "${test_libs}") LL_ADD_INTEGRATION_TEST(classic_callback "" "${test_libs}")
LL_ADD_INTEGRATION_TEST(commonmisc "" "${test_libs}") LL_ADD_INTEGRATION_TEST(commonmisc "" "${test_libs}")

115
indra/llcommon/apply.h Normal file
View File

@ -0,0 +1,115 @@
/**
* @file apply.h
* @author Nat Goodspeed
* @date 2022-06-18
* @brief C++14 version of std::apply()
*
* $LicenseInfo:firstyear=2022&license=viewerlgpl$
* Copyright (c) 2022, Linden Research, Inc.
* $/LicenseInfo$
*/
#if ! defined(LL_APPLY_H)
#define LL_APPLY_H
#include <boost/type_traits/function_traits.hpp>
#include <tuple>
namespace LL
{
/**
* USAGE NOTE:
* https://stackoverflow.com/a/40523474/5533635
*
* If you're trying to pass apply() a variadic function, the compiler
* complains that it can't deduce the callable type, presumably because it
* doesn't know which arity to reify to pass.
*
* But it works to wrap the variadic function in a generic lambda, e.g.:
*
* @CODE
* LL::apply(
* [](auto&&... args)
* {
* return variadic(std::forward<decltype(args)>(args)...);
* },
* args);
* @ENDCODE
*
* Presumably this is because there's only one instance of the generic lambda
* @em type, with a variadic <tt>operator()()</tt>.
*
* It's pointless to provide a wrapper @em function that implicitly supplies
* the generic lambda. You couldn't pass your variadic function to our wrapper
* function, for the same original reason!
*
* Instead we provide a wrapper @em macro. Sorry, Dr. Stroustrup.
*/
#define VAPPLY(FUNC, ARGS) \
LL::apply( \
[](auto&&... args) \
{ \
return (FUNC)(std::forward<decltype(args)>(args)...); \
}, \
(ARGS))
#if __cplusplus >= 201703L
// C++17 implementation
using std::apply;
#else // C++14
// Derived from https://stackoverflow.com/a/20441189
// and https://en.cppreference.com/w/cpp/utility/apply
template <typename CALLABLE, typename TUPLE, std::size_t... I>
auto apply_impl(CALLABLE&& func, TUPLE&& args, std::index_sequence<I...>)
{
// call func(unpacked args)
return std::forward<CALLABLE>(func)(std::move(std::get<I>(args))...);
}
template <typename CALLABLE, typename... ARGS>
auto apply(CALLABLE&& func, const std::tuple<ARGS...>& args)
{
// std::index_sequence_for is the magic sauce here, generating an argument
// pack of indexes for each entry in args. apply_impl() can then pass
// those to std::get() to unpack args into individual arguments.
return apply_impl(std::forward<CALLABLE>(func),
args,
std::index_sequence_for<ARGS...>{});
}
// per https://stackoverflow.com/a/57510428/5533635
template <typename CALLABLE, typename T, size_t SIZE>
auto apply(CALLABLE&& func, const std::array<T, SIZE>& args)
{
return apply(std::forward<CALLABLE>(func), std::tuple_cat(args));
}
// per https://stackoverflow.com/a/28411055/5533635
template <typename CALLABLE, typename T, std::size_t... I>
auto apply_impl(CALLABLE&& func, const std::vector<T>& args, std::index_sequence<I...>)
{
return apply_impl(std::forward<CALLABLE>(func),
std::make_tuple(std::forward<T>(args[I])...),
I...);
}
// this goes beyond C++17 std::apply()
template <typename CALLABLE, typename T>
auto apply(CALLABLE&& func, const std::vector<T>& args)
{
constexpr auto arity = boost::function_traits<CALLABLE>::arity;
assert(args.size() == arity);
return apply_impl(std::forward<CALLABLE>(func),
args,
std::make_index_sequence<arity>());
}
#endif // C++14
} // namespace LL
#endif /* ! defined(LL_APPLY_H) */

Some files were not shown because too many files have changed in this diff Show More