diff options
| author | Oz Linden <oz@lindenlab.com> | 2010-12-29 15:29:58 -0500 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2010-12-29 15:29:58 -0500 | 
| commit | e70ca1c391d0338b7a1cccd1d02e4532268e65f7 (patch) | |
| tree | e6077ae3551d78d1d9b19900c406853e0afcf4d4 /indra/cmake | |
| parent | bf1d42ff96cbccff8f4a802b2c609fac15502365 (diff) | |
| parent | 087c105317058dc3a011c937a5aceaf87fdecc26 (diff) | |
merge kdu unit tests (storm-744)
Diffstat (limited to 'indra/cmake')
| -rw-r--r-- | indra/cmake/00-Common.cmake | 31 | ||||
| -rw-r--r-- | indra/cmake/BerkeleyDB.cmake | 7 | ||||
| -rw-r--r-- | indra/cmake/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | indra/cmake/CURL.cmake | 6 | ||||
| -rw-r--r-- | indra/cmake/FindJsonCpp.cmake | 5 | ||||
| -rw-r--r-- | indra/cmake/FindLLQtWebkit.cmake | 62 | ||||
| -rw-r--r-- | indra/cmake/FindNDOF.cmake | 39 | ||||
| -rw-r--r-- | indra/cmake/FindTut.cmake | 7 | ||||
| -rw-r--r-- | indra/cmake/FindZLIB.cmake | 46 | ||||
| -rw-r--r-- | indra/cmake/LLAddBuildTest.cmake | 541 | ||||
| -rw-r--r-- | indra/cmake/LLCommon.cmake | 9 | ||||
| -rw-r--r-- | indra/cmake/LLPlugin.cmake | 8 | ||||
| -rw-r--r-- | indra/cmake/NDOF.cmake | 34 | ||||
| -rw-r--r-- | indra/cmake/PulseAudio.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/Python.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/TemplateCheck.cmake | 7 | ||||
| -rw-r--r-- | indra/cmake/Tut.cmake | 1 | ||||
| -rw-r--r-- | indra/cmake/ViewerMiscLibs.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/WebKitLibPlugin.cmake | 25 | 
19 files changed, 530 insertions, 305 deletions
| diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index a114d6e778..dbe0cf5cd0 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -4,27 +4,28 @@  include(Variables) -  # Portable compilation flags. - -if (EXISTS ${CMAKE_SOURCE_DIR}/llphysics) -  # The release build should only offer to send crash reports if we're -  # building from a Linden internal source tree. -  set(release_crash_reports 1) -else (EXISTS ${CMAKE_SOURCE_DIR}/llphysics) -  set(release_crash_reports 0)  -endif (EXISTS ${CMAKE_SOURCE_DIR}/llphysics) -  set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1")  set(CMAKE_CXX_FLAGS_RELEASE -    "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=${release_crash_reports} -DNDEBUG")  +    "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -D_SECURE_SCL=0 -DNDEBUG")   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  -    "-DLL_RELEASE=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") +    "-DLL_RELEASE=1 -D_SECURE_SCL=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") +# Configure crash reporting +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") -# Don't bother with a MinSizeRel build. +if(RELEASE_CRASH_REPORTING) +  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DLL_SEND_CRASH_REPORTS=1") +endif() + +if(NON_RELEASE_CRASH_REPORTING) +  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DLL_SEND_CRASH_REPORTS=1") +  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DLL_SEND_CRASH_REPORTS=1") +endif()   +# Don't bother with a MinSizeRel build.  set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING      "Supported build types." FORCE) @@ -38,10 +39,10 @@ if (WINDOWS)    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP"        CACHE STRING "C++ compiler debug options" FORCE)    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  -      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP" +      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP /Ob2"        CACHE STRING "C++ compiler release-with-debug options" FORCE)    set(CMAKE_CXX_FLAGS_RELEASE -      "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP" +      "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP /Ob2"        CACHE STRING "C++ compiler release options" FORCE)    set(CMAKE_CXX_STANDARD_LIBRARIES "") diff --git a/indra/cmake/BerkeleyDB.cmake b/indra/cmake/BerkeleyDB.cmake index d98e79179d..e3ca0fd77d 100644 --- a/indra/cmake/BerkeleyDB.cmake +++ b/indra/cmake/BerkeleyDB.cmake @@ -6,6 +6,11 @@ set(DB_FIND_REQUIRED ON)  if (STANDALONE)    include(FindBerkeleyDB)  else (STANDALONE) -  set(DB_LIBRARIES db-4.2) +  if (LINUX) +    # Need to add dependency pthread explicitely to support ld.gold. +    set(DB_LIBRARIES db-4.2 pthread) +  else (LINUX) +    set(DB_LIBRARIES db-4.2) +  endif (LINUX)    set(DB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)  endif (STANDALONE) diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index 6470836286..3f421b270b 100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -33,6 +33,7 @@ set(cmake_SOURCE_FILES      FindMySQL.cmake      FindOpenJPEG.cmake      FindXmlRpcEpi.cmake +    FindZLIB.cmake      FMOD.cmake      FreeType.cmake      GStreamer010Plugin.cmake diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake index 6e5fed4d52..9aba08e573 100644 --- a/indra/cmake/CURL.cmake +++ b/indra/cmake/CURL.cmake @@ -10,10 +10,10 @@ else (STANDALONE)    use_prebuilt_binary(curl)    if (WINDOWS)      set(CURL_LIBRARIES  -    debug libcurld -    optimized libcurl) +    debug libcurld.lib +    optimized libcurl.lib)    else (WINDOWS) -    set(CURL_LIBRARIES curl) +    set(CURL_LIBRARIES libcurl.a)    endif (WINDOWS)    set(CURL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)  endif (STANDALONE) diff --git a/indra/cmake/FindJsonCpp.cmake b/indra/cmake/FindJsonCpp.cmake index 9d16f2aaab..cf84b309c1 100644 --- a/indra/cmake/FindJsonCpp.cmake +++ b/indra/cmake/FindJsonCpp.cmake @@ -21,7 +21,12 @@ EXEC_PROGRAM(${CMAKE_CXX_COMPILER}              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 (STANDALONE) +	# On standalone, assume that the system installed library was compiled with the used compiler. +	SET(JSONCPP_NAMES ${JSONCPP_NAMES} libjson.so) +ENDIF (STANDALONE)  FIND_LIBRARY(JSONCPP_LIBRARY    NAMES ${JSONCPP_NAMES}    PATHS /usr/lib /usr/local/lib diff --git a/indra/cmake/FindLLQtWebkit.cmake b/indra/cmake/FindLLQtWebkit.cmake new file mode 100644 index 0000000000..c747ec32a2 --- /dev/null +++ b/indra/cmake/FindLLQtWebkit.cmake @@ -0,0 +1,62 @@ +# -*- cmake -*- + +# - Find llqtwebkit +# Find the llqtwebkit includes and library +# This module defines +#  LLQTWEBKIT_INCLUDE_DIR, where to find llqtwebkit.h, etc. +#  LLQTWEBKIT_LIBRARY, the llqtwebkit library with full path. +#  LLQTWEBKIT_FOUND, If false, do not try to use llqtwebkit. +# also defined, but not for general use are +#  LLQTWEBKIT_LIBRARIES, the libraries needed to use llqtwebkit. +#  LLQTWEBKIT_LIBRARY_DIRS, where to find the llqtwebkit library. +#  LLQTWEBKIT_DEFINITIONS - You should add_definitions(${LLQTWEBKIT_DEFINITIONS}) +#      before compiling code that includes llqtwebkit library files. + +# Try to use pkg-config first. +# This allows to have two different libllqtwebkit packages installed: +# one for viewer 2.x and one for viewer 1.x. +include(FindPkgConfig) +if (PKG_CONFIG_FOUND) +    if (LLQtWebkit_FIND_REQUIRED AND LLQtWebkit_FIND_VERSION) +        set(_PACKAGE_ARGS libllqtwebkit>=${LLQtWebkit_FIND_VERSION} REQUIRED) +    else (LLQtWebkit_FIND_REQUIRED AND LLQtWebkit_FIND_VERSION) +        set(_PACKAGE_ARGS libllqtwebkit) +    endif (LLQtWebkit_FIND_REQUIRED AND LLQtWebkit_FIND_VERSION) +    if (NOT "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" VERSION_LESS "2.8") +      # As virtually nobody will have a pkg-config file for this, do this check always quiet. +      # Unfortunately cmake 2.8 or higher is required for pkg_check_modules to have a 'QUIET'. +      set(_PACKAGE_ARGS ${_PACKAGE_ARGS} QUIET) +    endif () +    pkg_check_modules(LLQTWEBKIT ${_PACKAGE_ARGS}) +endif (PKG_CONFIG_FOUND) +set(LLQTWEBKIT_DEFINITIONS ${LLQTWEBKIT_CFLAGS_OTHER}) + +find_path(LLQTWEBKIT_INCLUDE_DIR llqtwebkit.h NO_SYSTEM_ENVIRONMENT_PATH HINTS ${LLQTWEBKIT_INCLUDE_DIRS}) + +find_library(LLQTWEBKIT_LIBRARY NAMES llqtwebkit NO_SYSTEM_ENVIRONMENT_PATH HINTS ${LLQTWEBKIT_LIBRARY_DIRS}) + +if (NOT PKG_CONFIG_FOUND OR NOT LLQTWEBKIT_FOUND)	# If pkg-config couldn't find it, pretend we don't have pkg-config. +   set(LLQTWEBKIT_LIBRARIES llqtwebkit) +   get_filename_component(LLQTWEBKIT_LIBRARY_DIRS ${LLQTWEBKIT_LIBRARY} PATH) +endif (NOT PKG_CONFIG_FOUND OR NOT LLQTWEBKIT_FOUND) + +# Handle the QUIETLY and REQUIRED arguments and set LLQTWEBKIT_FOUND +# to TRUE if all listed variables are TRUE. +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( +  LLQTWEBKIT +  DEFAULT_MSG +  LLQTWEBKIT_LIBRARY +  LLQTWEBKIT_INCLUDE_DIR +  LLQTWEBKIT_LIBRARIES +  LLQTWEBKIT_LIBRARY_DIRS +  ) + +mark_as_advanced( +  LLQTWEBKIT_LIBRARY +  LLQTWEBKIT_INCLUDE_DIR +  LLQTWEBKIT_LIBRARIES +  LLQTWEBKIT_LIBRARY_DIRS +  LLQTWEBKIT_DEFINITIONS +  ) + diff --git a/indra/cmake/FindNDOF.cmake b/indra/cmake/FindNDOF.cmake new file mode 100644 index 0000000000..6dcf590a53 --- /dev/null +++ b/indra/cmake/FindNDOF.cmake @@ -0,0 +1,39 @@ +# -*- 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 +  ) diff --git a/indra/cmake/FindTut.cmake b/indra/cmake/FindTut.cmake index b5d58f6396..c2a9f43053 100644 --- a/indra/cmake/FindTut.cmake +++ b/indra/cmake/FindTut.cmake @@ -3,12 +3,11 @@  # - Find Tut  # Find the Tut unit test framework includes and library  # This module defines -#  TUT_INCLUDE_DIR, where to find tut.h, etc. +#  TUT_INCLUDE_DIR, where to find tut/tut.hpp.  #  TUT_FOUND, If false, do not try to use Tut. -find_path(TUT_INCLUDE_DIR tut.h -    /usr/local/include/ -    /usr/include +find_path(TUT_INCLUDE_DIR tut/tut.hpp +    NO_SYSTEM_ENVIRONMENT_PATH      )  if (TUT_INCLUDE_DIR) diff --git a/indra/cmake/FindZLIB.cmake b/indra/cmake/FindZLIB.cmake new file mode 100644 index 0000000000..6d630f1ba9 --- /dev/null +++ b/indra/cmake/FindZLIB.cmake @@ -0,0 +1,46 @@ +# -*- cmake -*- + +# - Find zlib +# Find the ZLIB includes and library +# This module defines +#  ZLIB_INCLUDE_DIRS, where to find zlib.h, etc. +#  ZLIB_LIBRARIES, the libraries needed to use zlib. +#  ZLIB_FOUND, If false, do not try to use zlib. +# +# This FindZLIB 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(ZLIB_INCLUDE_DIR zlib.h +  NO_SYSTEM_ENVIRONMENT_PATH +  ) + +FIND_LIBRARY(ZLIB_LIBRARY z) + +if (ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR) +  SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR}) +  SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY}) +  SET(ZLIB_FOUND "YES") +else (ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR) +  SET(ZLIB_FOUND "NO") +endif (ZLIB_LIBRARY AND ZLIB_INCLUDE_DIR) + +if (ZLIB_FOUND) +  if (NOT ZLIB_FIND_QUIETLY) +	message(STATUS "Found ZLIB: ${ZLIB_LIBRARIES}") +	SET(ZLIB_FIND_QUIETLY TRUE) +  endif (NOT ZLIB_FIND_QUIETLY) +else (ZLIB_FOUND) +  if (ZLIB_FIND_REQUIRED) +	message(FATAL_ERROR "Could not find ZLIB library") +  endif (ZLIB_FIND_REQUIRED) +endif (ZLIB_FOUND) + +mark_as_advanced( +  ZLIB_LIBRARY +  ZLIB_INCLUDE_DIR +  ) + diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index 79c3bb7da2..62b764bb30 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -1,265 +1,276 @@ -# -*- cmake -*- -include(LLTestCommand) -include(GoogleMock) - -MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) -  # Given a project name and a list of sourcefiles (with optional properties on each), -  # add targets to build and run the tests specified. -  # ASSUMPTIONS: -  # * this macro is being executed in the project file that is passed in -  # * current working SOURCE dir is that project dir -  # * there is a subfolder tests/ with test code corresponding to the filenames passed in -  # * 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 -  # -  # 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) -    MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}") -  ENDIF(LL_TEST_VERBOSE) - -  # Start with the header and project-wide setup before making targets -  #project(UNITTEST_PROJECT_${project}) -  # Setup includes, paths, etc -  SET(alltest_SOURCE_FILES -    ${CMAKE_SOURCE_DIR}/test/test.cpp -    ${CMAKE_SOURCE_DIR}/test/lltut.cpp -    ) -  SET(alltest_DEP_TARGETS -    # needed by the test harness itself -    ${APRUTIL_LIBRARIES} -    ${APR_LIBRARIES} -    llcommon -    ) -  IF(NOT "${project}" STREQUAL "llmath") -    # add llmath as a dep unless the tested module *is* llmath! -    LIST(APPEND alltest_DEP_TARGETS -      llmath -      ) -  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 -    ${GOOGLEMOCK_LIBRARIES} -    ${PTHREAD_LIBRARY} -    ${WINDOWS_LIBRARIES} -    ) -  # Headers, for convenience in targets. -  SET(alltest_HEADER_FILES -    ${CMAKE_SOURCE_DIR}/test/test.h -    ) - -  # Use the default flags -  if (LINUX) -    SET(CMAKE_EXE_LINKER_FLAGS "") -  endif (LINUX) - -  # start the source test executable definitions -  SET(${project}_TEST_OUTPUT "") -  FOREACH (source ${sources}) -    STRING( REGEX REPLACE "(.*)\\.[^.]+$" "\\1" name ${source} ) -    STRING( REGEX REPLACE ".*\\.([^.]+)$" "\\1" extension ${source} ) -    IF(LL_TEST_VERBOSE) -      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} individual source: ${source} (${name}.${extension})") -    ENDIF(LL_TEST_VERBOSE) - -    # -    # Per-codefile additional / external source, header, and include dir property extraction -    # -    # Source -    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_SOURCE_FILES ${source} LL_TEST_ADDITIONAL_SOURCE_FILES) -    IF(${name}_test_additional_SOURCE_FILES MATCHES NOTFOUND) -      SET(${name}_test_additional_SOURCE_FILES "") -    ENDIF(${name}_test_additional_SOURCE_FILES MATCHES NOTFOUND) -    SET(${name}_test_SOURCE_FILES ${source} tests/${name}_test.${extension} ${alltest_SOURCE_FILES} ${${name}_test_additional_SOURCE_FILES} ) -    IF(LL_TEST_VERBOSE) -      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_SOURCE_FILES ${${name}_test_SOURCE_FILES}") -    ENDIF(LL_TEST_VERBOSE) -    # Headers -    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_HEADER_FILES ${source} LL_TEST_ADDITIONAL_HEADER_FILES) -    IF(${name}_test_additional_HEADER_FILES MATCHES NOTFOUND) -      SET(${name}_test_additional_HEADER_FILES "") -    ENDIF(${name}_test_additional_HEADER_FILES MATCHES NOTFOUND) -    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}) -    IF(LL_TEST_VERBOSE) -      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_HEADER_FILES ${${name}_test_HEADER_FILES}") -    ENDIF(LL_TEST_VERBOSE) -    # Include dirs -    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_INCLUDE_DIRS ${source} LL_TEST_ADDITIONAL_INCLUDE_DIRS) -    IF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND) -      SET(${name}_test_additional_INCLUDE_DIRS "") -    ENDIF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND) -    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 -    ADD_EXECUTABLE(PROJECT_${project}_TEST_${name} ${${name}_test_SOURCE_FILES}) -    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 -    # -    # WARNING: it's REALLY IMPORTANT to not mix these. I guarantee it will not work in the future. + poppy 2009-04-19 -    # Projects -    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_PROJECTS ${source} LL_TEST_ADDITIONAL_PROJECTS) -    IF(${name}_test_additional_PROJECTS MATCHES NOTFOUND) -      SET(${name}_test_additional_PROJECTS "") -    ENDIF(${name}_test_additional_PROJECTS MATCHES NOTFOUND) -    # Libraries -    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_LIBRARIES ${source} LL_TEST_ADDITIONAL_LIBRARIES) -    IF(${name}_test_additional_LIBRARIES MATCHES NOTFOUND) -      SET(${name}_test_additional_LIBRARIES "") -    ENDIF(${name}_test_additional_LIBRARIES MATCHES NOTFOUND) -    IF(LL_TEST_VERBOSE) -      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_PROJECTS ${${name}_test_additional_PROJECTS}") -      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_LIBRARIES ${${name}_test_additional_LIBRARIES}") -    ENDIF(LL_TEST_VERBOSE) -    # Add to project -    TARGET_LINK_LIBRARIES(PROJECT_${project}_TEST_${name} ${alltest_LIBRARIES} ${alltest_DEP_TARGETS} ${${name}_test_additional_PROJECTS} ${${name}_test_additional_LIBRARIES} ) -     -    # -    # Setup test targets -    # -    GET_TARGET_PROPERTY(TEST_EXE PROJECT_${project}_TEST_${name} LOCATION) -    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}) - -    # daveh - what configuration does this use? Debug? it's cmake-time, not build time. + poppy 2009-04-19 -    IF(LL_TEST_VERBOSE) -      MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_cmd  = ${TEST_CMD}") -    ENDIF(LL_TEST_VERBOSE) - -    SET_TEST_PATH(LD_LIBRARY_PATH) -    LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${TEST_CMD}) -    IF(LL_TEST_VERBOSE) -      MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_script  = ${TEST_SCRIPT_CMD}") -    ENDIF(LL_TEST_VERBOSE) -    # Add test  -    ADD_CUSTOM_COMMAND( -        OUTPUT ${TEST_OUTPUT} -        COMMAND ${TEST_SCRIPT_CMD} -        DEPENDS PROJECT_${project}_TEST_${name} -        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} -        ) -    # Why not add custom target and add POST_BUILD command? -    # Slightly less uncertain behavior -    # (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  -    # > failure after the first time you build and fail a test. - daveh 2009-04-20 -    LIST(APPEND ${project}_TEST_OUTPUT ${TEST_OUTPUT}) -  ENDFOREACH (source) - -  # Add the test runner target per-project -  # (replaces old _test_ok targets all over the place) -  ADD_CUSTOM_TARGET(${project}_tests ALL DEPENDS ${${project}_TEST_OUTPUT}) -  ADD_DEPENDENCIES(${project} ${project}_tests) -ENDMACRO(LL_ADD_PROJECT_UNIT_TESTS) - -FUNCTION(LL_ADD_INTEGRATION_TEST  -    testname -    additional_source_files -    library_dependencies -# variable args -    ) -  if(TEST_DEBUG) -    message(STATUS "Adding INTEGRATION_TEST_${testname} - debug output is on") -  endif(TEST_DEBUG) -   -  SET(source_files -    tests/${testname}_test.cpp -    ${CMAKE_SOURCE_DIR}/test/test.cpp -    ${CMAKE_SOURCE_DIR}/test/lltut.cpp -    ${additional_source_files} -    ) - -  SET(libraries -    ${library_dependencies} -    ${GOOGLEMOCK_LIBRARIES} -    ${PTHREAD_LIBRARY} -    ) - -  # Add test executable build target -  if(TEST_DEBUG) -    message(STATUS "ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})") -  endif(TEST_DEBUG) -  ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files}) -  SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}") - -  # Add link deps to the executable -  if(TEST_DEBUG) -    message(STATUS "TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})") -  endif(TEST_DEBUG) -  TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries}) - -  # Create the test running command -  SET(test_command ${ARGN}) -  GET_TARGET_PROPERTY(TEST_EXE INTEGRATION_TEST_${testname} LOCATION) -  LIST(FIND test_command "{}" test_exe_pos) -  IF(test_exe_pos LESS 0) -    # 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 -    # name to $ARGN, the variable part of the arg list. This is convenient -    # shorthand for both straightforward execution of the test program (empty -    # $ARGN) and for running a "wrapper" program of some kind accepting the -    # 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 -    # desired command line. -    LIST(APPEND test_command "${TEST_EXE}") -  ELSE (test_exe_pos LESS 0) -    # Found {} marker at test_exe_pos. Remove the {}... -    LIST(REMOVE_AT test_command test_exe_pos) -    # ...and replace it with the actual name of the test executable. -    LIST(INSERT test_command test_exe_pos "${TEST_EXE}") -  ENDIF (test_exe_pos LESS 0) - -  SET_TEST_PATH(LD_LIBRARY_PATH) -  LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${test_command}) - -  if(TEST_DEBUG) -    message(STATUS "TEST_SCRIPT_CMD: ${TEST_SCRIPT_CMD}") -  endif(TEST_DEBUG) - -  ADD_CUSTOM_COMMAND( -    TARGET INTEGRATION_TEST_${testname} -    POST_BUILD -    COMMAND ${TEST_SCRIPT_CMD} -    ) - -  # Use CTEST? Not sure how to yet... -  # ADD_TEST(INTEGRATION_TEST_RUNNER_${testname} ${TEST_SCRIPT_CMD}) - -ENDFUNCTION(LL_ADD_INTEGRATION_TEST) - -MACRO(SET_TEST_PATH LISTVAR) -  IF(WINDOWS) -    # We typically build/package only Release variants of third-party -    # libraries, so append the Release staging dir in case the library being -    # sought doesn't have a debug variant. -    set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR} ${SHARED_LIB_STAGING_DIR}/Release) -  ELSEIF(DARWIN) -    # We typically build/package only Release variants of third-party -    # libraries, so append the Release staging dir in case the library being -    # 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) -  ELSE(WINDOWS) -    # Linux uses a single staging directory anyway. -    IF (STANDALONE) -      set(${LISTVAR} ${CMAKE_BINARY_DIR}/llcommon /usr/lib /usr/local/lib) -    ELSE (STANDALONE) -      set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} /usr/lib) -    ENDIF (STANDALONE) -  ENDIF(WINDOWS) -ENDMACRO(SET_TEST_PATH) +# -*- cmake -*-
 +include(LLTestCommand)
 +include(GoogleMock)
 +
 +MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources)
 +  # Given a project name and a list of sourcefiles (with optional properties on each),
 +  # add targets to build and run the tests specified.
 +  # ASSUMPTIONS:
 +  # * this macro is being executed in the project file that is passed in
 +  # * current working SOURCE dir is that project dir
 +  # * there is a subfolder tests/ with test code corresponding to the filenames passed in
 +  # * 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
 +  #
 +  # 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)
 +    MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}")
 +  ENDIF(LL_TEST_VERBOSE)
 +
 +  # Start with the header and project-wide setup before making targets
 +  #project(UNITTEST_PROJECT_${project})
 +  # Setup includes, paths, etc
 +  SET(alltest_SOURCE_FILES
 +    ${CMAKE_SOURCE_DIR}/test/test.cpp
 +    ${CMAKE_SOURCE_DIR}/test/lltut.cpp
 +    )
 +  SET(alltest_DEP_TARGETS
 +    # needed by the test harness itself
 +    ${APRUTIL_LIBRARIES}
 +    ${APR_LIBRARIES}
 +    llcommon
 +    )
 +  IF(NOT "${project}" STREQUAL "llmath")
 +    # add llmath as a dep unless the tested module *is* llmath!
 +    LIST(APPEND alltest_DEP_TARGETS
 +      llmath
 +      )
 +  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
 +    ${GOOGLEMOCK_LIBRARIES}
 +    ${PTHREAD_LIBRARY}
 +    ${WINDOWS_LIBRARIES}
 +    )
 +  # Headers, for convenience in targets.
 +  SET(alltest_HEADER_FILES
 +    ${CMAKE_SOURCE_DIR}/test/test.h
 +    )
 +
 +  # Use the default flags
 +  if (LINUX)
 +    SET(CMAKE_EXE_LINKER_FLAGS "")
 +  endif (LINUX)
 +
 +  # start the source test executable definitions
 +  SET(${project}_TEST_OUTPUT "")
 +  FOREACH (source ${sources})
 +    STRING( REGEX REPLACE "(.*)\\.[^.]+$" "\\1" name ${source} )
 +    STRING( REGEX REPLACE ".*\\.([^.]+)$" "\\1" extension ${source} )
 +    IF(LL_TEST_VERBOSE)
 +      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} individual source: ${source} (${name}.${extension})")
 +    ENDIF(LL_TEST_VERBOSE)
 +
 +    #
 +    # Per-codefile additional / external source, header, and include dir property extraction
 +    #
 +    # Source
 +    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_SOURCE_FILES ${source} LL_TEST_ADDITIONAL_SOURCE_FILES)
 +    IF(${name}_test_additional_SOURCE_FILES MATCHES NOTFOUND)
 +      SET(${name}_test_additional_SOURCE_FILES "")
 +    ENDIF(${name}_test_additional_SOURCE_FILES MATCHES NOTFOUND)
 +    SET(${name}_test_SOURCE_FILES ${source} tests/${name}_test.${extension} ${alltest_SOURCE_FILES} ${${name}_test_additional_SOURCE_FILES} )
 +    IF(LL_TEST_VERBOSE)
 +      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_SOURCE_FILES ${${name}_test_SOURCE_FILES}")
 +    ENDIF(LL_TEST_VERBOSE)
 +    # Headers
 +    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_HEADER_FILES ${source} LL_TEST_ADDITIONAL_HEADER_FILES)
 +    IF(${name}_test_additional_HEADER_FILES MATCHES NOTFOUND)
 +      SET(${name}_test_additional_HEADER_FILES "")
 +    ENDIF(${name}_test_additional_HEADER_FILES MATCHES NOTFOUND)
 +    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})
 +    IF(LL_TEST_VERBOSE)
 +      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_HEADER_FILES ${${name}_test_HEADER_FILES}")
 +    ENDIF(LL_TEST_VERBOSE)
 +    # Include dirs
 +    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_INCLUDE_DIRS ${source} LL_TEST_ADDITIONAL_INCLUDE_DIRS)
 +    IF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND)
 +      SET(${name}_test_additional_INCLUDE_DIRS "")
 +    ENDIF(${name}_test_additional_INCLUDE_DIRS MATCHES NOTFOUND)
 +    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
 +    ADD_EXECUTABLE(PROJECT_${project}_TEST_${name} ${${name}_test_SOURCE_FILES})
 +    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
 +    #
 +    # WARNING: it's REALLY IMPORTANT to not mix these. I guarantee it will not work in the future. + poppy 2009-04-19
 +    # Projects
 +    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_PROJECTS ${source} LL_TEST_ADDITIONAL_PROJECTS)
 +    IF(${name}_test_additional_PROJECTS MATCHES NOTFOUND)
 +      SET(${name}_test_additional_PROJECTS "")
 +    ENDIF(${name}_test_additional_PROJECTS MATCHES NOTFOUND)
 +    # Libraries
 +    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_LIBRARIES ${source} LL_TEST_ADDITIONAL_LIBRARIES)
 +    IF(${name}_test_additional_LIBRARIES MATCHES NOTFOUND)
 +      SET(${name}_test_additional_LIBRARIES "")
 +    ENDIF(${name}_test_additional_LIBRARIES MATCHES NOTFOUND)
 +    IF(LL_TEST_VERBOSE)
 +      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_PROJECTS ${${name}_test_additional_PROJECTS}")
 +      MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_LIBRARIES ${${name}_test_additional_LIBRARIES}")
 +    ENDIF(LL_TEST_VERBOSE)
 +    # Add to project
 +    TARGET_LINK_LIBRARIES(PROJECT_${project}_TEST_${name} ${alltest_LIBRARIES} ${alltest_DEP_TARGETS} ${${name}_test_additional_PROJECTS} ${${name}_test_additional_LIBRARIES} )
 +    # Compile-time Definitions
 +    GET_SOURCE_FILE_PROPERTY(${name}_test_additional_CFLAGS ${source} LL_TEST_ADDITIONAL_CFLAGS)
 +     IF(NOT ${name}_test_additional_CFLAGS MATCHES NOTFOUND)
 +       SET_TARGET_PROPERTIES(PROJECT_${project}_TEST_${name} PROPERTIES COMPILE_FLAGS ${${name}_test_additional_CFLAGS} )
 +       IF(LL_TEST_VERBOSE)
 +         MESSAGE("LL_ADD_PROJECT_UNIT_TESTS ${name}_test_additional_CFLAGS ${${name}_test_additional_CFLAGS}")
 +       ENDIF(LL_TEST_VERBOSE)
 +     ENDIF(NOT ${name}_test_additional_CFLAGS MATCHES NOTFOUND)
 +     
 +    #
 +    # Setup test targets
 +    #
 +    GET_TARGET_PROPERTY(TEST_EXE PROJECT_${project}_TEST_${name} LOCATION)
 +    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})
 +
 +    # daveh - what configuration does this use? Debug? it's cmake-time, not build time. + poppy 2009-04-19
 +    IF(LL_TEST_VERBOSE)
 +      MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_cmd  = ${TEST_CMD}")
 +    ENDIF(LL_TEST_VERBOSE)
 +
 +    SET_TEST_PATH(LD_LIBRARY_PATH)
 +    LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${TEST_CMD})
 +    IF(LL_TEST_VERBOSE)
 +      MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_script  = ${TEST_SCRIPT_CMD}")
 +    ENDIF(LL_TEST_VERBOSE)
 +    # Add test 
 +    ADD_CUSTOM_COMMAND(
 +        OUTPUT ${TEST_OUTPUT}
 +        COMMAND ${TEST_SCRIPT_CMD}
 +        DEPENDS PROJECT_${project}_TEST_${name}
 +        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
 +        )
 +    # Why not add custom target and add POST_BUILD command?
 +    # Slightly less uncertain behavior
 +    # (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 
 +    # > failure after the first time you build and fail a test. - daveh 2009-04-20
 +    LIST(APPEND ${project}_TEST_OUTPUT ${TEST_OUTPUT})
 +  ENDFOREACH (source)
 +
 +  # Add the test runner target per-project
 +  # (replaces old _test_ok targets all over the place)
 +  ADD_CUSTOM_TARGET(${project}_tests ALL DEPENDS ${${project}_TEST_OUTPUT})
 +  ADD_DEPENDENCIES(${project} ${project}_tests)
 +ENDMACRO(LL_ADD_PROJECT_UNIT_TESTS)
 +
 +FUNCTION(LL_ADD_INTEGRATION_TEST 
 +    testname
 +    additional_source_files
 +    library_dependencies
 +# variable args
 +    )
 +  if(TEST_DEBUG)
 +    message(STATUS "Adding INTEGRATION_TEST_${testname} - debug output is on")
 +  endif(TEST_DEBUG)
 +  
 +  SET(source_files
 +    tests/${testname}_test.cpp
 +    ${CMAKE_SOURCE_DIR}/test/test.cpp
 +    ${CMAKE_SOURCE_DIR}/test/lltut.cpp
 +    ${additional_source_files}
 +    )
 +
 +  SET(libraries
 +    ${library_dependencies}
 +    ${GOOGLEMOCK_LIBRARIES}
 +    ${PTHREAD_LIBRARY}
 +    )
 +
 +  # Add test executable build target
 +  if(TEST_DEBUG)
 +    message(STATUS "ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})")
 +  endif(TEST_DEBUG)
 +  ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})
 +  SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}")
 +  if(STANDALONE)
 +    SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}")
 +  endif(STANDALONE)
 +
 +  # Add link deps to the executable
 +  if(TEST_DEBUG)
 +    message(STATUS "TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})")
 +  endif(TEST_DEBUG)
 +  TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})
 +
 +  # Create the test running command
 +  SET(test_command ${ARGN})
 +  GET_TARGET_PROPERTY(TEST_EXE INTEGRATION_TEST_${testname} LOCATION)
 +  LIST(FIND test_command "{}" test_exe_pos)
 +  IF(test_exe_pos LESS 0)
 +    # 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
 +    # name to $ARGN, the variable part of the arg list. This is convenient
 +    # shorthand for both straightforward execution of the test program (empty
 +    # $ARGN) and for running a "wrapper" program of some kind accepting the
 +    # 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
 +    # desired command line.
 +    LIST(APPEND test_command "${TEST_EXE}")
 +  ELSE (test_exe_pos LESS 0)
 +    # Found {} marker at test_exe_pos. Remove the {}...
 +    LIST(REMOVE_AT test_command test_exe_pos)
 +    # ...and replace it with the actual name of the test executable.
 +    LIST(INSERT test_command test_exe_pos "${TEST_EXE}")
 +  ENDIF (test_exe_pos LESS 0)
 +
 +  SET_TEST_PATH(LD_LIBRARY_PATH)
 +  LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${test_command})
 +
 +  if(TEST_DEBUG)
 +    message(STATUS "TEST_SCRIPT_CMD: ${TEST_SCRIPT_CMD}")
 +  endif(TEST_DEBUG)
 +
 +  ADD_CUSTOM_COMMAND(
 +    TARGET INTEGRATION_TEST_${testname}
 +    POST_BUILD
 +    COMMAND ${TEST_SCRIPT_CMD}
 +    )
 +
 +  # Use CTEST? Not sure how to yet...
 +  # ADD_TEST(INTEGRATION_TEST_RUNNER_${testname} ${TEST_SCRIPT_CMD})
 +
 +ENDFUNCTION(LL_ADD_INTEGRATION_TEST)
 +
 +MACRO(SET_TEST_PATH LISTVAR)
 +  IF(WINDOWS)
 +    # We typically build/package only Release variants of third-party
 +    # libraries, so append the Release staging dir in case the library being
 +    # sought doesn't have a debug variant.
 +    set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR} ${SHARED_LIB_STAGING_DIR}/Release)
 +  ELSEIF(DARWIN)
 +    # We typically build/package only Release variants of third-party
 +    # libraries, so append the Release staging dir in case the library being
 +    # 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)
 +  ELSE(WINDOWS)
 +    # Linux uses a single staging directory anyway.
 +    IF (STANDALONE)
 +      set(${LISTVAR} ${CMAKE_BINARY_DIR}/llcommon /usr/lib /usr/local/lib)
 +    ELSE (STANDALONE)
 +      set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} /usr/lib)
 +    ENDIF (STANDALONE)
 +  ENDIF(WINDOWS)
 +ENDMACRO(SET_TEST_PATH)
 diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index d1ab264a41..17e211cb99 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -13,7 +13,14 @@ set(LLCOMMON_INCLUDE_DIRS      ${Boost_INCLUDE_DIRS}      ) -set(LLCOMMON_LIBRARIES llcommon) +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 rt) +else (LINUX) +    set(LLCOMMON_LIBRARIES llcommon) +endif (LINUX)  add_definitions(${TCMALLOC_FLAG}) diff --git a/indra/cmake/LLPlugin.cmake b/indra/cmake/LLPlugin.cmake index 9722f16c3c..7ee404b9bd 100644 --- a/indra/cmake/LLPlugin.cmake +++ b/indra/cmake/LLPlugin.cmake @@ -5,4 +5,10 @@ set(LLPLUGIN_INCLUDE_DIRS      ${LIBS_OPEN_DIR}/llplugin      ) -set(LLPLUGIN_LIBRARIES 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) diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake index dad74e99b1..7a463d1190 100644 --- a/indra/cmake/NDOF.cmake +++ b/indra/cmake/NDOF.cmake @@ -1,14 +1,32 @@  # -*- cmake -*-  include(Prebuilt) -use_prebuilt_binary(ndofdev) +set(NDOF ON CACHE BOOL "Use NDOF space navigator joystick library.") -if (WINDOWS OR DARWIN OR LINUX) +if (NDOF) +  if (STANDALONE) +	set(NDOF_FIND_REQUIRED ON) +	include(FindNDOF) +  else (STANDALONE) +	use_prebuilt_binary(ndofdev) + +	if (WINDOWS) +	  set(NDOF_LIBRARY libndofdev) +	elseif (DARWIN OR LINUX) +	  set(NDOF_LIBRARY ndofdev) +	endif (WINDOWS) + +	set(NDOF_INCLUDE_DIR ${ARCH_PREBUILT_DIRS}/include/ndofdev) +	set(NDOF_FOUND 1) +  endif (STANDALONE) +endif (NDOF) + +if (NDOF_FOUND)    add_definitions(-DLIB_NDOF=1) -endif (WINDOWS OR DARWIN OR LINUX) +  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) -if (WINDOWS) -  set(NDOF_LIBRARY libndofdev) -elseif (DARWIN OR LINUX) -  set(NDOF_LIBRARY ndofdev) -endif (WINDOWS) diff --git a/indra/cmake/PulseAudio.cmake b/indra/cmake/PulseAudio.cmake index e918de0198..360a971058 100644 --- a/indra/cmake/PulseAudio.cmake +++ b/indra/cmake/PulseAudio.cmake @@ -1,7 +1,7 @@  # -*- cmake -*-  include(Prebuilt) -set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.") +set(PULSEAUDIO OFF CACHE BOOL "Build with PulseAudio support, if available.")  if (PULSEAUDIO)    if (STANDALONE) diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake index 0901c1b7a2..748c8c2bec 100644 --- a/indra/cmake/Python.cmake +++ b/indra/cmake/Python.cmake @@ -9,10 +9,12 @@ if (WINDOWS)      NAMES python25.exe python23.exe python.exe      NO_DEFAULT_PATH # added so that cmake does not find cygwin python      PATHS +    [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath]      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath]      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath]      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath]      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] +    [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath]      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath]      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath]      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] diff --git a/indra/cmake/TemplateCheck.cmake b/indra/cmake/TemplateCheck.cmake index fa4e387dd5..90d58d93ad 100644 --- a/indra/cmake/TemplateCheck.cmake +++ b/indra/cmake/TemplateCheck.cmake @@ -7,8 +7,9 @@ macro (check_message_template _target)        TARGET ${_target}        POST_BUILD        COMMAND ${PYTHON_EXECUTABLE} -      ARGS ${SCRIPTS_DIR}/template_verifier.py -           --mode=development --cache_master -      COMMENT "Verifying message template" +      ARGS ${SCRIPTS_DIR}/md5check.py +           3f19d130400c547de36278a6b6f9b028 +           ${SCRIPTS_DIR}/messages/message_template.msg +      COMMENT "Verifying message template - See http://wiki.secondlife.com/wiki/Template_verifier.py"        )  endmacro (check_message_template) diff --git a/indra/cmake/Tut.cmake b/indra/cmake/Tut.cmake index 784560471d..738c08c42f 100644 --- a/indra/cmake/Tut.cmake +++ b/indra/cmake/Tut.cmake @@ -6,7 +6,6 @@ set(TUT_FIND_QUIETLY TRUE)  if (STANDALONE)    include(FindTut) -  include_directories(${TUT_INCLUDE_DIR})  else (STANDALONE)    use_prebuilt_binary(tut)  endif (STANDALONE) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 32c4bc81df..df013b1665 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -3,7 +3,7 @@ include(Prebuilt)  if (NOT STANDALONE)    use_prebuilt_binary(libuuid) -  use_prebuilt_binary(vivox) +  use_prebuilt_binary(slvoice)    use_prebuilt_binary(fontconfig)  endif(NOT STANDALONE) diff --git a/indra/cmake/WebKitLibPlugin.cmake b/indra/cmake/WebKitLibPlugin.cmake index 12ba1b1b35..1f5b0f5d84 100644 --- a/indra/cmake/WebKitLibPlugin.cmake +++ b/indra/cmake/WebKitLibPlugin.cmake @@ -3,6 +3,29 @@ include(Linking)  include(Prebuilt)  if (STANDALONE) +  # The minimal version, 4.4.3, is rather arbitrary: it's the version in Debian/Lenny. +  find_package(Qt4 4.4.3 COMPONENTS QtCore QtGui QtNetwork QtOpenGL QtWebKit REQUIRED) +  include(${QT_USE_FILE}) +  set(QTDIR $ENV{QTDIR}) +  if (QTDIR AND NOT "${QT_BINARY_DIR}" STREQUAL "${QTDIR}/bin") +	message(FATAL_ERROR "\"${QT_BINARY_DIR}\" is unequal \"${QTDIR}/bin\"; " +	  "Qt is found by looking for qmake in your PATH. " +	  "Please set your PATH such that 'qmake' is found in \$QTDIR/bin, " +	  "or unset QTDIR if the found Qt is correct.") +	endif (QTDIR AND NOT "${QT_BINARY_DIR}" STREQUAL "${QTDIR}/bin") +  find_package(LLQtWebkit REQUIRED QUIET) +  # Add the plugins. +  set(QT_PLUGIN_LIBRARIES) +  foreach(qlibname qgif qjpeg) +	find_library(QT_PLUGIN_${qlibname} ${qlibname} PATHS ${QT_PLUGINS_DIR}/imageformats NO_DEFAULT_PATH) +	if (QT_PLUGIN_${qlibname}) +	  list(APPEND QT_PLUGIN_LIBRARIES ${QT_PLUGIN_${qlibname}}) +	else (QT_PLUGIN_${qtlibname}) +	  message(FATAL_ERROR "Could not find the Qt plugin ${qlibname} in \"${QT_PLUGINS_DIR}/imageformats\"!") +	endif (QT_PLUGIN_${qlibname}) +  endforeach(qlibname) +  # qjpeg depends on libjpeg +  list(APPEND QT_PLUGIN_LIBRARIES jpeg)    set(WEBKITLIBPLUGIN OFF CACHE BOOL        "WEBKITLIBPLUGIN support for the llplugin/llmedia test apps.")  else (STANDALONE) @@ -35,7 +58,7 @@ elseif (DARWIN)        )  elseif (LINUX)    if (STANDALONE)  -    set(WEBKIT_PLUGIN_LIBRARIES llqtwebkit) +    set(WEBKIT_PLUGIN_LIBRARIES ${LLQTWEBKIT_LIBRARY} ${QT_LIBRARIES} ${QT_PLUGIN_LIBRARIES})    else (STANDALONE)      set(WEBKIT_PLUGIN_LIBRARIES          llqtwebkit | 
