From ca8149ca6d157eb4b5fc8ba0e5ba3a6e56f72e7e Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Thu, 30 Apr 2009 13:04:20 -0500 Subject: Second Life viewer sources 1.23.0-RC --- linden/indra/cmake/00-Common.cmake | 20 ++-- linden/indra/cmake/APR.cmake | 10 +- linden/indra/cmake/Audio.cmake | 16 +++- linden/indra/cmake/Boost.cmake | 12 +-- linden/indra/cmake/CommonMiscLibs.cmake | 7 -- linden/indra/cmake/CopyWinLibs.cmake | 64 +++++++------ linden/indra/cmake/FindMT.cmake | 15 +++ linden/indra/cmake/GooglePerfTools.cmake | 5 + linden/indra/cmake/JPEG.cmake | 2 +- linden/indra/cmake/LLAddBuildTest.cmake | 154 +++++++++++++++++++++++++++++++ linden/indra/cmake/LLAudio.cmake | 9 +- linden/indra/cmake/LLRender.cmake | 4 +- linden/indra/cmake/LLWindow.cmake | 5 + linden/indra/cmake/Linking.cmake | 5 + linden/indra/cmake/NDOF.cmake | 6 +- linden/indra/cmake/OPENAL.cmake | 2 +- linden/indra/cmake/RunBuildTest.cmake | 22 +++++ linden/indra/cmake/Tut.cmake | 6 ++ linden/indra/cmake/ViewerMiscLibs.cmake | 1 - linden/indra/cmake/ZLIB.cmake | 6 +- 20 files changed, 293 insertions(+), 78 deletions(-) delete mode 100644 linden/indra/cmake/CommonMiscLibs.cmake create mode 100644 linden/indra/cmake/FindMT.cmake create mode 100644 linden/indra/cmake/LLAddBuildTest.cmake create mode 100644 linden/indra/cmake/RunBuildTest.cmake create mode 100644 linden/indra/cmake/Tut.cmake (limited to 'linden/indra/cmake') diff --git a/linden/indra/cmake/00-Common.cmake b/linden/indra/cmake/00-Common.cmake index bf2d2c3..a4ea9ff 100644 --- a/linden/indra/cmake/00-Common.cmake +++ b/linden/indra/cmake/00-Common.cmake @@ -9,9 +9,9 @@ include(Variables) set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1") set(CMAKE_CXX_FLAGS_RELEASE - "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG") + "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -D_SECURE_SCL=0 -DNDEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO - "-DLL_RELEASE=1 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") + "-DLL_RELEASE=1 -D_SECURE_SCL=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") # Don't bother with a MinSizeRel build. @@ -26,15 +26,18 @@ if (WINDOWS) # Don't build DLLs. set(BUILD_SHARED_LIBS OFF) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MTd" + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd" CACHE STRING "C++ compiler debug options" FORCE) set(CMAKE_CXX_FLAGS_RELWITHDEBINFO - "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MT" + "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD" CACHE STRING "C++ compiler release-with-debug options" FORCE) set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MT" + "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD" CACHE STRING "C++ compiler release options" FORCE) + set(CMAKE_CXX_STANDARD_LIBRARIES "") + set(CMAKE_C_STANDARD_LIBRARIES "") + add_definitions( /DLL_WINDOWS=1 /DUNICODE @@ -111,7 +114,8 @@ if (LINUX) # widespread of them. if (${CXX_VERSION} MATCHES "4.3") - add_definitions(-Wno-deprecated -Wno-parentheses) + add_definitions(-Wno-parentheses) + set(CMAKE_CXX_FLAGS "-Wno-deprecated ${CMAKE_CXX_FLAGS}") endif (${CXX_VERSION} MATCHES "4.3") # End of hacks. @@ -152,6 +156,8 @@ if (LINUX) if (VIEWER) add_definitions(-DAPPID=secondlife) add_definitions(-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 (NOT STANDALONE) # this stops us requiring a really recent glibc at runtime add_definitions(-fno-stack-protector) @@ -177,7 +183,7 @@ endif (DARWIN) if (LINUX OR DARWIN) - set(GCC_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs") + set(GCC_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs -Wno-non-virtual-dtor") if (NOT GCC_DISABLE_FATAL_WARNINGS) set(GCC_WARNINGS "${GCC_WARNINGS} -Werror") diff --git a/linden/indra/cmake/APR.cmake b/linden/indra/cmake/APR.cmake index 523d8ee..25ee364 100644 --- a/linden/indra/cmake/APR.cmake +++ b/linden/indra/cmake/APR.cmake @@ -1,5 +1,3 @@ -# -*- cmake -*- - include(BerkeleyDB) include(Linking) include(Prebuilt) @@ -19,14 +17,14 @@ else (STANDALONE) debug ${ARCH_PREBUILT_DIRS_DEBUG}/apr-1.lib optimized ${ARCH_PREBUILT_DIRS_RELEASE}/apr-1.lib ) - set(APRUTIL_LIBRARIES - debug ${ARCH_PREBUILT_DIRS_DEBUG}/aprutil-1.lib - optimized ${ARCH_PREBUILT_DIRS_RELEASE}/aprutil-1.lib - ) set(APRICONV_LIBRARIES debug ${ARCH_PREBUILT_DIRS_DEBUG}/apriconv-1.lib optimized ${ARCH_PREBUILT_DIRS_RELEASE}/apriconv-1.lib ) + set(APRUTIL_LIBRARIES + debug ${ARCH_PREBUILT_DIRS_DEBUG}/aprutil-1.lib ${APRICONV_LIBRARIES} + optimized ${ARCH_PREBUILT_DIRS_RELEASE}/aprutil-1.lib ${APRICONV_LIBRARIES} + ) elseif (DARWIN) set(APR_LIBRARIES debug ${ARCH_PREBUILT_DIRS_DEBUG}/libapr-1.a diff --git a/linden/indra/cmake/Audio.cmake b/linden/indra/cmake/Audio.cmake index c6ccab2..d23bc2f 100644 --- a/linden/indra/cmake/Audio.cmake +++ b/linden/indra/cmake/Audio.cmake @@ -14,10 +14,18 @@ else (STANDALONE) set(VORBISFILE_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS}) if (WINDOWS) - set(OGG_LIBRARIES ogg_static_mt) - set(VORBIS_LIBRARIES vorbis_static_mt) - set(VORBISENC_LIBRARIES vorbisenc_static_mt) - set(VORBISFILE_LIBRARIES vorbisfile_static_mt) + set(OGG_LIBRARIES + 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) set(OGG_LIBRARIES ogg) set(VORBIS_LIBRARIES vorbis) diff --git a/linden/indra/cmake/Boost.cmake b/linden/indra/cmake/Boost.cmake index a7db67c..0578ae9 100644 --- a/linden/indra/cmake/Boost.cmake +++ b/linden/indra/cmake/Boost.cmake @@ -28,14 +28,14 @@ else (STANDALONE) debug libboost_signals-vc71-mt-sgd-${BOOST_VERSION}) else (MSVC71) set(BOOST_PROGRAM_OPTIONS_LIBRARY - optimized libboost_program_options-vc80-mt-s-${BOOST_VERSION} - debug libboost_program_options-vc80-mt-sgd-${BOOST_VERSION}) + optimized libboost_program_options-vc80-mt-${BOOST_VERSION} + debug libboost_program_options-vc80-mt-gd-${BOOST_VERSION}) set(BOOST_REGEX_LIBRARY - optimized libboost_regex-vc80-mt-s-${BOOST_VERSION} - debug libboost_regex-vc80-mt-sgd-${BOOST_VERSION}) + optimized libboost_regex-vc80-mt-${BOOST_VERSION} + debug libboost_regex-vc80-mt-gd-${BOOST_VERSION}) set(BOOST_SIGNALS_LIBRARY - optimized libboost_signals-vc80-mt-s-${BOOST_VERSION} - debug libboost_signals-vc80-mt-sgd-${BOOST_VERSION}) + optimized libboost_signals-vc80-mt-${BOOST_VERSION} + debug libboost_signals-vc80-mt-gd-${BOOST_VERSION}) endif (MSVC71) elseif (DARWIN) set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt) diff --git a/linden/indra/cmake/CommonMiscLibs.cmake b/linden/indra/cmake/CommonMiscLibs.cmake deleted file mode 100644 index 513acf3..0000000 --- a/linden/indra/cmake/CommonMiscLibs.cmake +++ /dev/null @@ -1,7 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) - -if (NOT STANDALONE) - use_prebuilt_binary(tut) -endif(NOT STANDALONE) - diff --git a/linden/indra/cmake/CopyWinLibs.cmake b/linden/indra/cmake/CopyWinLibs.cmake index 92b5d71..b1291df 100644 --- a/linden/indra/cmake/CopyWinLibs.cmake +++ b/linden/indra/cmake/CopyWinLibs.cmake @@ -18,7 +18,6 @@ set(vivox_files set(debug_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug") set(debug_files freebl3.dll - gksvggdiplus.dll js3250.dll nspr4.dll nss3.dll @@ -53,7 +52,6 @@ set(all_targets ${all_targets} ${out_targets}) set(release_src_dir "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release") set(release_files freebl3.dll - gksvggdiplus.dll js3250.dll nspr4.dll nss3.dll @@ -112,34 +110,38 @@ if(EXISTS ${internal_llkdu_path}) ) set(all_targets ${all_targets} ${llkdu_dst}) else(EXISTS ${internal_llkdu_path}) - set(debug_llkdu_src "${debug_src_dir}/llkdu.dll") - set(debug_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/Debug/llkdu.dll") - ADD_CUSTOM_COMMAND( - OUTPUT ${debug_llkdu_dst} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${debug_llkdu_src} ${debug_llkdu_dst} - DEPENDS ${debug_llkdu_src} - COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/Debug" - ) - set(all_targets ${all_targets} ${debug_llkdu_dst}) - - set(release_llkdu_src "${release_src_dir}/llkdu.dll") - set(release_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/Release/llkdu.dll") - ADD_CUSTOM_COMMAND( - OUTPUT ${release_llkdu_dst} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${release_llkdu_src} ${release_llkdu_dst} - DEPENDS ${release_llkdu_src} - COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/Release" - ) - set(all_targets ${all_targets} ${release_llkdu_dst}) - - set(relwithdebinfo_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/llkdu.dll") - ADD_CUSTOM_COMMAND( - OUTPUT ${relwithdebinfo_llkdu_dst} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${release_llkdu_src} ${relwithdebinfo_llkdu_dst} - DEPENDS ${release_llkdu_src} - COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" - ) - set(all_targets ${all_targets} ${relwithdebinfo_llkdu_dst}) + if (EXISTS "${debug_src_dir}/llkdu.dll") + set(debug_llkdu_src "${debug_src_dir}/llkdu.dll") + set(debug_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/Debug/llkdu.dll") + ADD_CUSTOM_COMMAND( + OUTPUT ${debug_llkdu_dst} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${debug_llkdu_src} ${debug_llkdu_dst} + DEPENDS ${debug_llkdu_src} + COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/Debug" + ) + set(all_targets ${all_targets} ${debug_llkdu_dst}) + endif (EXISTS "${debug_src_dir}/llkdu.dll") + + if (EXISTS "${release_src_dir}/llkdu.dll") + set(release_llkdu_src "${release_src_dir}/llkdu.dll") + set(release_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/Release/llkdu.dll") + ADD_CUSTOM_COMMAND( + OUTPUT ${release_llkdu_dst} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${release_llkdu_src} ${release_llkdu_dst} + DEPENDS ${release_llkdu_src} + COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/Release" + ) + set(all_targets ${all_targets} ${release_llkdu_dst}) + + set(relwithdebinfo_llkdu_dst "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo/llkdu.dll") + ADD_CUSTOM_COMMAND( + OUTPUT ${relwithdebinfo_llkdu_dst} + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${release_llkdu_src} ${relwithdebinfo_llkdu_dst} + DEPENDS ${release_llkdu_src} + COMMENT "Copying llkdu.dll ${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" + ) + set(all_targets ${all_targets} ${relwithdebinfo_llkdu_dst}) + endif (EXISTS "${release_src_dir}/llkdu.dll") endif (EXISTS ${internal_llkdu_path}) @@ -150,6 +152,7 @@ if (MSVC80) PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT NO_DEFAULT_PATH + NO_DEFAULT_PATH ) if(EXISTS ${debug_msvc8_redist_path}) @@ -172,6 +175,7 @@ if (MSVC80) PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC80.CRT NO_DEFAULT_PATH + NO_DEFAULT_PATH ) if(EXISTS ${release_msvc8_redist_path}) diff --git a/linden/indra/cmake/FindMT.cmake b/linden/indra/cmake/FindMT.cmake new file mode 100644 index 0000000..5239a4c --- /dev/null +++ b/linden/indra/cmake/FindMT.cmake @@ -0,0 +1,15 @@ +#Find the windows manifest tool. + +FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt + PATHS + "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin" + "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin" + "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin") +IF(HAVE_MANIFEST_TOOL) + MESSAGE(STATUS "Found Mainfest Tool. Embedding custom manifests.") +ELSE(HAVE_MANIFEST_TOOL) + MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.") +ENDIF(HAVE_MANIFEST_TOOL) + +STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS + ${CMAKE_EXE_LINKER_FLAGS}) diff --git a/linden/indra/cmake/GooglePerfTools.cmake b/linden/indra/cmake/GooglePerfTools.cmake index 25e9f6d..aff65cb 100644 --- a/linden/indra/cmake/GooglePerfTools.cmake +++ b/linden/indra/cmake/GooglePerfTools.cmake @@ -5,6 +5,11 @@ if (STANDALONE) include(FindGooglePerfTools) else (STANDALONE) use_prebuilt_binary(google) + if (WINDOWS) + set(TCMALLOC_LIBRARIES + debug libtcmalloc_minimal-debug + optimized libtcmalloc_minimal-debug) + endif (WINDOWS) if (LINUX) set(TCMALLOC_LIBRARIES tcmalloc) set(STACKTRACE_LIBRARIES stacktrace) diff --git a/linden/indra/cmake/JPEG.cmake b/linden/indra/cmake/JPEG.cmake index 5d0ee0d..9514d59 100644 --- a/linden/indra/cmake/JPEG.cmake +++ b/linden/indra/cmake/JPEG.cmake @@ -17,7 +17,7 @@ else (STANDALONE) debug ${ARCH_PREBUILT_DIRS_DEBUG}/liblljpeg.a ) elseif (WINDOWS) - set(JPEG_LIBRARIES jpeglib_6b) + set(JPEG_LIBRARIES jpeglib) endif (LINUX) set(JPEG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) endif (STANDALONE) diff --git a/linden/indra/cmake/LLAddBuildTest.cmake b/linden/indra/cmake/LLAddBuildTest.cmake new file mode 100644 index 0000000..08151bc --- /dev/null +++ b/linden/indra/cmake/LLAddBuildTest.cmake @@ -0,0 +1,154 @@ +# -*- cmake -*- + +INCLUDE(APR) +INCLUDE(LLMath) + +MACRO(ADD_BUILD_TEST_NO_COMMON name parent) +# MESSAGE("${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") + IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") + SET(no_common_libraries + ${APRUTIL_LIBRARIES} + ${APR_LIBRARIES} + ${PTHREAD_LIBRARY} + ${WINDOWS_LIBRARIES} + ) + SET(no_common_source_files + ${name}.cpp + tests/${name}_test.cpp + ${CMAKE_SOURCE_DIR}/test/test.cpp + ) + ADD_BUILD_TEST_INTERNAL("${name}" "${parent}" "${no_common_libraries}" "${no_common_source_files}") + ENDIF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") +ENDMACRO(ADD_BUILD_TEST_NO_COMMON name parent) + + +MACRO(ADD_BUILD_TEST name parent) + # optional extra parameter: list of additional source files + SET(more_source_files "${ARGN}") + +# MESSAGE("${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") + IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") + + SET(basic_libraries + ${LLCOMMON_LIBRARIES} + ${APRUTIL_LIBRARIES} + ${APR_LIBRARIES} + ${PTHREAD_LIBRARY} + ${WINDOWS_LIBRARIES} + ) + SET(basic_source_files + ${name}.cpp + tests/${name}_test.cpp + ${CMAKE_SOURCE_DIR}/test/test.cpp + ${CMAKE_SOURCE_DIR}/test/lltut.cpp + ${more_source_files} + ) + ADD_BUILD_TEST_INTERNAL("${name}" "${parent}" "${basic_libraries}" "${basic_source_files}") + + ENDIF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/${name}_test.cpp") +ENDMACRO(ADD_BUILD_TEST name parent) + + +MACRO(ADD_VIEWER_BUILD_TEST name parent) + # This is just like the generic ADD_BUILD_TEST, but we implicitly + # add the necessary precompiled header .cpp file (anyone else find that + # oxymoronic?) because the MSVC build errors will NOT point you there. + ADD_BUILD_TEST("${name}" "${parent}" llviewerprecompiledheaders.cpp) +ENDMACRO(ADD_VIEWER_BUILD_TEST name parent) + + +MACRO(ADD_SIMULATOR_BUILD_TEST name parent) + ADD_BUILD_TEST("${name}" "${parent}" llsimprecompiledheaders.cpp) + + if (WINDOWS) + SET_SOURCE_FILES_PROPERTIES( + "tests/${name}_test.cpp" + PROPERTIES + COMPILE_FLAGS "/Yullsimprecompiledheaders.h" + ) + endif (WINDOWS) +ENDMACRO(ADD_SIMULATOR_BUILD_TEST name parent) + +MACRO(ADD_BUILD_TEST_INTERNAL name parent libraries source_files) + # Optional additional parameter: pathname of Python wrapper script + SET(wrapper "${ARGN}") + #MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} wrapper = ${wrapper}") + + SET(TEST_SOURCE_FILES ${source_files}) + SET(HEADER "${name}.h") + set_source_files_properties(${HEADER} + PROPERTIES HEADER_FILE_ONLY TRUE) + LIST(APPEND TEST_SOURCE_FILES ${HEADER}) + INCLUDE_DIRECTORIES("${LIBS_OPEN_DIR}/test") + ADD_EXECUTABLE(${name}_test ${TEST_SOURCE_FILES}) + TARGET_LINK_LIBRARIES(${name}_test + ${libraries} + ) + + GET_TARGET_PROPERTY(TEST_EXE ${name}_test LOCATION) + SET(TEST_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}_test_ok.txt) + + IF ("${wrapper}" STREQUAL "") + SET(TEST_CMD ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR}) + ELSE ("${wrapper}" STREQUAL "") + SET(TEST_CMD ${PYTHON_EXECUTABLE} ${wrapper} ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR}) + ENDIF ("${wrapper}" STREQUAL "") + + #MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} test_cmd = ${TEST_CMD}") + SET(TEST_SCRIPT_CMD + ${CMAKE_COMMAND} + -DLD_LIBRARY_PATH=${ARCH_PREBUILT_DIRS}:/usr/lib + -DTEST_CMD:STRING="${TEST_CMD}" + -P ${CMAKE_SOURCE_DIR}/cmake/RunBuildTest.cmake + ) + + #MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} test_script = ${TEST_SCRIPT_CMD}") + ADD_CUSTOM_COMMAND( + OUTPUT ${TEST_OUTPUT} + COMMAND ${TEST_SCRIPT_CMD} + DEPENDS ${name}_test + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + + ADD_CUSTOM_TARGET(${name}_test_ok ALL DEPENDS ${TEST_OUTPUT}) + IF (${parent}) + ADD_DEPENDENCIES(${parent} ${name}_test_ok) + ENDIF (${parent}) + +ENDMACRO(ADD_BUILD_TEST_INTERNAL name parent libraries source_files) + + +MACRO(ADD_COMM_BUILD_TEST name parent wrapper) +## MESSAGE(STATUS "ADD_COMM_BUILD_TEST ${name} wrapper = ${wrapper}") + # optional extra parameter: list of additional source files + SET(more_source_files "${ARGN}") +## MESSAGE(STATUS "ADD_COMM_BUILD_TEST ${name} more_source_files = ${more_source_files}") + + SET(libraries + ${LLMESSAGE_LIBRARIES} + ${LLMATH_LIBRARIES} + ${LLVFS_LIBRARIES} + ${LLCOMMON_LIBRARIES} + ${APRUTIL_LIBRARIES} + ${APR_LIBRARIES} + ${PTHREAD_LIBRARY} + ${WINDOWS_LIBRARIES} + ) + SET(source_files + ${name}.cpp + tests/${name}_test.cpp + ${CMAKE_SOURCE_DIR}/test/test.cpp + ${CMAKE_SOURCE_DIR}/test/lltut.cpp + ${more_source_files} + ) + + ADD_BUILD_TEST_INTERNAL("${name}" "${parent}" "${libraries}" "${source_files}" "${wrapper}") +ENDMACRO(ADD_COMM_BUILD_TEST name parent wrapper) + +MACRO(ADD_VIEWER_COMM_BUILD_TEST name parent wrapper) + # This is just like the generic ADD_COMM_BUILD_TEST, but we implicitly + # add the necessary precompiled header .cpp file (anyone else find that + # oxymoronic?) because the MSVC build errors will NOT point you there. +## MESSAGE(STATUS "ADD_VIEWER_COMM_BUILD_TEST ${name} wrapper = ${wrapper}") + ADD_COMM_BUILD_TEST("${name}" "${parent}" "${wrapper}" llviewerprecompiledheaders.cpp) +ENDMACRO(ADD_VIEWER_COMM_BUILD_TEST name parent wrapper) diff --git a/linden/indra/cmake/LLAudio.cmake b/linden/indra/cmake/LLAudio.cmake index ff479f6..89b790c 100644 --- a/linden/indra/cmake/LLAudio.cmake +++ b/linden/indra/cmake/LLAudio.cmake @@ -6,11 +6,4 @@ set(LLAUDIO_INCLUDE_DIRS ${LIBS_OPEN_DIR}/llaudio ) -set(LLAUDIO_LIBRARIES - llaudio - ${VORBISENC_LIBRARIES} - ${VORBISFILE_LIBRARIES} - ${VORBIS_LIBRARIES} - ${OGG_LIBRARIES} - ${OPENAL_LIBRARIES} - ) +set(LLAUDIO_LIBRARIES llaudio ${OPENAL_LIBRARIES}) diff --git a/linden/indra/cmake/LLRender.cmake b/linden/indra/cmake/LLRender.cmake index bbcf4cd..c47e887 100644 --- a/linden/indra/cmake/LLRender.cmake +++ b/linden/indra/cmake/LLRender.cmake @@ -18,8 +18,8 @@ endif (SERVER AND LINUX) # mapserver requires certain files to be copied so LL_MESA_HEADLESS can be set # differently for different object files. -macro (copy_server_sources _copied_SOURCES) - foreach (PREFIX ${_copied_SOURCES}) +macro (copy_server_sources ) + foreach (PREFIX ${ARGV}) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX}_server.cpp COMMAND ${CMAKE_COMMAND} diff --git a/linden/indra/cmake/LLWindow.cmake b/linden/indra/cmake/LLWindow.cmake index c0efa27..e749055 100644 --- a/linden/indra/cmake/LLWindow.cmake +++ b/linden/indra/cmake/LLWindow.cmake @@ -40,4 +40,9 @@ else (SERVER AND LINUX) set(LLWINDOW_LIBRARIES llwindow ) + if (WINDOWS) + list(APPEND LLWINDOW_LIBRARIES + comdlg32 + ) + endif (WINDOWS) endif (SERVER AND LINUX) diff --git a/linden/indra/cmake/Linking.cmake b/linden/indra/cmake/Linking.cmake index 167c5dd..2bddb95 100644 --- a/linden/indra/cmake/Linking.cmake +++ b/linden/indra/cmake/Linking.cmake @@ -32,11 +32,16 @@ endif (LINUX) if (WINDOWS) set(WINDOWS_LIBRARIES + advapi32 + shell32 ws2_32 mswsock psapi winmm netapi32 + wldap32 + gdi32 + user32 ) else (WINDOWS) set(WINDOWS_LIBRARIES "") diff --git a/linden/indra/cmake/NDOF.cmake b/linden/indra/cmake/NDOF.cmake index 3f715a2..dad74e9 100644 --- a/linden/indra/cmake/NDOF.cmake +++ b/linden/indra/cmake/NDOF.cmake @@ -3,12 +3,12 @@ include(Prebuilt) use_prebuilt_binary(ndofdev) -if (WINDOWS OR DARWIN) +if (WINDOWS OR DARWIN OR LINUX) add_definitions(-DLIB_NDOF=1) -endif (WINDOWS OR DARWIN) +endif (WINDOWS OR DARWIN OR LINUX) if (WINDOWS) set(NDOF_LIBRARY libndofdev) -elseif (DARWIN) +elseif (DARWIN OR LINUX) set(NDOF_LIBRARY ndofdev) endif (WINDOWS) diff --git a/linden/indra/cmake/OPENAL.cmake b/linden/indra/cmake/OPENAL.cmake index eb195a0..d01c680 100644 --- a/linden/indra/cmake/OPENAL.cmake +++ b/linden/indra/cmake/OPENAL.cmake @@ -15,7 +15,7 @@ if (OPENAL) pkg_check_modules(OPENAL_LIB REQUIRED openal) pkg_check_modules(FREEALUT_LIB REQUIRED freealut) else (STANDALONE) - use_prebuilt_binary(openal) + use_prebuilt_binary(openal-soft) endif (STANDALONE) set(OPENAL_LIBRARIES openal diff --git a/linden/indra/cmake/RunBuildTest.cmake b/linden/indra/cmake/RunBuildTest.cmake new file mode 100644 index 0000000..2da3e88 --- /dev/null +++ b/linden/indra/cmake/RunBuildTest.cmake @@ -0,0 +1,22 @@ +#This cmake script is meant to be run as a build time custom command. +#The script is run using cmake w/ the -P option. +# parameters are passed to this scripts execution with the -D option. +# A full command line would look like this: +# cmake -D LD_LIBRARY_PATH=~/checkout/libraries -D TEST_CMD=./llunit_test -D ARGS=--touch=llunit_test_ok.txt -P RunBuildTest.cmake + +# Parameters: +# LD_LIBRARY_PATH: string, What to set the LD_LIBRARY_PATH env var. +# TEST_CMD: string list, command to run the unit test with, followed by its args. +set(ENV{LD_LIBRARY_PATH} ${LD_LIBRARY_PATH}) +#message("Running: ${TEST_CMD}") +separate_arguments(TEST_CMD) +#message("Running: ${TEST_CMD}") +execute_process( + COMMAND ${TEST_CMD} + RESULT_VARIABLE RES + ) + +if(NOT ${RES} STREQUAL 0) + message(STATUS "Failure running: ${TEST_CMD}") + message(FATAL_ERROR "Error: ${RES}") +endif(NOT ${RES} STREQUAL 0) \ No newline at end of file diff --git a/linden/indra/cmake/Tut.cmake b/linden/indra/cmake/Tut.cmake new file mode 100644 index 0000000..7488e9d --- /dev/null +++ b/linden/indra/cmake/Tut.cmake @@ -0,0 +1,6 @@ +# -*- cmake -*- +include(Prebuilt) + +if (NOT STANDALONE) + use_prebuilt_binary(tut) +endif(NOT STANDALONE) diff --git a/linden/indra/cmake/ViewerMiscLibs.cmake b/linden/indra/cmake/ViewerMiscLibs.cmake index 68ee881..2a8abda 100644 --- a/linden/indra/cmake/ViewerMiscLibs.cmake +++ b/linden/indra/cmake/ViewerMiscLibs.cmake @@ -2,7 +2,6 @@ include(Prebuilt) if (NOT STANDALONE) - use_prebuilt_binary(libstdc++) use_prebuilt_binary(libuuid) use_prebuilt_binary(vivox) use_prebuilt_binary(fontconfig) diff --git a/linden/indra/cmake/ZLIB.cmake b/linden/indra/cmake/ZLIB.cmake index 80d4191..48e5130 100644 --- a/linden/indra/cmake/ZLIB.cmake +++ b/linden/indra/cmake/ZLIB.cmake @@ -10,11 +10,13 @@ if (STANDALONE) else (STANDALONE) use_prebuilt_binary(zlib) if (WINDOWS) - set(ZLIB_LIBRARIES zlib) + set(ZLIB_LIBRARIES + debug zlibd + optimized zlib) else (WINDOWS) set(ZLIB_LIBRARIES z) endif (WINDOWS) if (WINDOWS OR LINUX) - set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/zlib) + set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib) endif (WINDOWS OR LINUX) endif (STANDALONE) -- cgit v1.1