diff options
| author | Bryan O'Sullivan <bos@lindenlab.com> | 2008-06-02 21:14:31 +0000 | 
|---|---|---|
| committer | Bryan O'Sullivan <bos@lindenlab.com> | 2008-06-02 21:14:31 +0000 | 
| commit | 9db949eec327df4173fde3de934a87bedb0db13c (patch) | |
| tree | aeffa0f0e68b1d2ceb74d460cbbd22652c9cd159 /indra/cmake | |
| parent | 419e13d0acaabf5e1e02e9b64a07648bce822b2f (diff) | |
svn merge -r88066:88786 svn+ssh://svn.lindenlab.com/svn/linden/branches/cmake-9-merge
dataserver-is-deprecated
for-fucks-sake-whats-with-these-commit-markers
Diffstat (limited to 'indra/cmake')
60 files changed, 1865 insertions, 0 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake new file mode 100644 index 0000000000..58f06075a8 --- /dev/null +++ b/indra/cmake/00-Common.cmake @@ -0,0 +1,199 @@ +# -*- cmake -*- +# +# Compilation options shared by all Second Life components. + +include(Variables) + + +# Portable compilation flags. + +set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1") +set(CMAKE_CXX_FLAGS_RELEASE +    "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DLL_SEND_CRASH_REPORTS=1 -DNDEBUG") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  +    "-DLL_RELEASE=1 -DLL_SEND_CRASH_REPORTS=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") + + +# Don't bother with a MinSizeRel build. + +set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING +    "Supported build types." FORCE) + + +# Platform-specific compilation flags. + +if (WINDOWS) +  # Don't build DLLs. +  set(BUILD_SHARED_LIBS OFF) + +  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MTd" +      CACHE STRING "C++ compiler debug options" FORCE) +  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  +      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MT" +      CACHE STRING "C++ compiler release-with-debug options" FORCE) +  set(CMAKE_CXX_FLAGS_RELEASE +      "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /MT" +      CACHE STRING "C++ compiler release options" FORCE) + +  add_definitions( +      /DLL_WINDOWS=1 +      /DUNICODE +      /D_UNICODE  +      /GS +      /TP +      /W3 +      /c +      /Zc:forScope +      /nologo +      ) +      +  if(MSVC80 OR MSVC90) +    add_definitions( +      /Zc:wchar_t- +      ) +  endif (MSVC80 OR MSVC90) +   +  # Are we using the crummy Visual Studio KDU build workaround? +  if (NOT VS_DISABLE_FATAL_WARNINGS) +    add_definitions(/WX) +  endif (NOT VS_DISABLE_FATAL_WARNINGS) +endif (WINDOWS) + + +if (LINUX) +  set(CMAKE_SKIP_RPATH TRUE) + +  # Here's a giant hack for Fedora 8, where we can't use +  # _FORTIFY_SOURCE if we're using a compiler older than gcc 4.1. + +  find_program(GXX g++) +  mark_as_advanced(GXX) + +  if (GXX) +    execute_process( +        COMMAND ${GXX} --version +        COMMAND sed "s/^[gc+ ]*//" +        COMMAND head -1 +        OUTPUT_VARIABLE GXX_VERSION +        OUTPUT_STRIP_TRAILING_WHITESPACE +        ) +  else (GXX) +    set(GXX_VERSION x) +  endif (GXX) + +  # The quoting hack here is necessary in case we're using distcc or +  # ccache as our compiler.  CMake doesn't pass the command line +  # through the shell by default, so we end up trying to run "distcc" +  # " g++" - notice the leading space.  Ugh. + +  execute_process( +      COMMAND sh -c "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} --version" +      COMMAND sed "s/^[gc+ ]*//" +      COMMAND head -1 +      OUTPUT_VARIABLE CXX_VERSION +      OUTPUT_STRIP_TRAILING_WHITESPACE) + +  if (${GXX_VERSION} STREQUAL ${CXX_VERSION}) +    add_definitions(-D_FORTIFY_SOURCE=2) +  else (${GXX_VERSION} STREQUAL ${CXX_VERSION}) +    if (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat") +      add_definitions(-D_FORTIFY_SOURCE=2) +    endif (NOT ${GXX_VERSION} MATCHES " 4.1.*Red Hat") +  endif (${GXX_VERSION} STREQUAL ${CXX_VERSION}) + +  # GCC 4.3 introduces a pile of obnoxious new warnings, which we +  # treat as errors due to -Werror.  Quiet the most offensive and +  # widespread of them. + +  if (${GXX_VERSION} MATCHES "4.3") +    add_definitions(-Wno-deprecated -Wno-parentheses) +  endif (${GXX_VERSION} MATCHES "4.3") + +  # End of hacks. + +  add_definitions( +      -DLL_LINUX=1 +      -D_REENTRANT +      -fexceptions +      -fno-math-errno +      -fno-strict-aliasing +      -fsigned-char +      -g +      -pthread +      ) + +  if (SERVER) +    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-60") +    if (EXISTS /etc/debian_version) +      FILE(READ /etc/debian_version DEBIAN_VERSION) +    else (EXISTS /etc/debian_version) +      set(DEBIAN_VERSION "") +    endif (EXISTS /etc/debian_version) + +    if (NOT DEBIAN_VERSION STREQUAL "3.1") +      add_definitions(-DCTYPE_WORKAROUND) +    endif (NOT DEBIAN_VERSION STREQUAL "3.1") + +    if (EXISTS /usr/lib/mysql4/mysql) +      link_directories(/usr/lib/mysql4/mysql) +    endif (EXISTS /usr/lib/mysql4/mysql) + +    add_definitions( +        -msse2 +        -mfpmath=sse +        ) +  endif (SERVER) + +  if (VIEWER) +    add_definitions(-DAPPID=secondlife) +  endif (VIEWER) + +  set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}") +  set(CMAKE_CXX_FLAGS_RELEASE "-O2 ${CMAKE_CXX_FLAGS_RELEASE}") +endif (LINUX) + + +if (DARWIN) +  add_definitions(-DLL_DARWIN=1) +  set(CMAKE_LD_FLAGS "-headerpad_max_install_names") +  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch") +  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch") +endif (DARWIN) + + +if (LINUX OR DARWIN) +  set(GCC_WARNINGS "-Wall -Wno-sign-compare -Wno-trigraphs") + +  if (NOT GCC_DISABLE_FATAL_WARNINGS) +    set(GCC_WARNINGS "${GCC_WARNINGS} -Werror") +  endif (NOT GCC_DISABLE_FATAL_WARNINGS) + +  set(GCC_CXX_WARNINGS "${GCC_WARNINGS} -Wno-reorder") + +  set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}") +  set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}") +endif (LINUX OR DARWIN) + + +if (STANDALONE) +  add_definitions(-DLL_STANDALONE=1) + +  if (LINUX AND ${ARCH} STREQUAL "i686") +    add_definitions(-march=pentiumpro) +  endif (LINUX AND ${ARCH} STREQUAL "i686") + +else (STANDALONE) +  set(${ARCH}_linux_INCLUDES +      ELFIO +      atk-1.0 +      glib-2.0 +      gstreamer-0.10 +      gtk-2.0 +      llfreetype2 +      pango-1.0 +      ) +endif (STANDALONE) + +if(SERVER) +  include_directories(${LIBS_PREBUILT_DIR}/include/havok) +endif(SERVER) diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake new file mode 100644 index 0000000000..c495b7f7c6 --- /dev/null +++ b/indra/cmake/APR.cmake @@ -0,0 +1,53 @@ +# -*- cmake -*- + +include(BerkeleyDB) +include(Linking) + +set(APR_FIND_QUIETLY ON) +set(APR_FIND_REQUIRED ON) + +set(APRUTIL_FIND_QUIETLY ON) +set(APRUTIL_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindAPR) +else (STANDALONE) +  if (WINDOWS) +    set(WINLIBS_PREBUILT_DEBUG_DIR  +      ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug +      ) +    set(WINLIBS_PREBUILT_RELEASE_DIR  +      ${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release +      ) +    set(APR_LIBRARIES  +      debug ${WINLIBS_PREBUILT_DEBUG_DIR}/apr-1 +      optimized ${WINLIBS_PREBUILT_RELEASE_DIR}/apr-1 +      ) +    set(APRUTIL_LIBRARIES  +      debug ${WINLIBS_PREBUILT_DEBUG_DIR}/aprutil-1 +      optimized ${WINLIBS_PREBUILT_RELEASE_DIR}/aprutil-1 +      ) +    set(APRICONV_LIBRARIES  +      debug ${WINLIBS_PREBUILT_DEBUG_DIR}/apriconv-1 +      optimized ${WINLIBS_PREBUILT_RELEASE_DIR}/apriconv-1 +      ) +  elseif (DARWIN) +    set(APR_LIBRARIES  +      debug ${ARCH_PREBUILT_DIRS_DEBUG}/apr-1 +      optimized ${ARCH_PREBUILT_DIRS_RELEASE}/apr-1 +      ) +    set(APRUTIL_LIBRARIES  +      debug ${ARCH_PREBUILT_DIRS_DEBUG}/aprutil-1 +      optimized ${ARCH_PREBUILT_DIRS_RELEASE}/aprutil-1 +      ) +    set(APRICONV_LIBRARIES apriconv-1) +  else (WINDOWS) +    set(APR_LIBRARIES apr-1) +    set(APRUTIL_LIBRARIES aprutil-1) +  endif (WINDOWS) +  set(APR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/apr-1) + +  if (LINUX AND VIEWER) +    list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES}) +  endif (LINUX AND VIEWER) +endif (STANDALONE) diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake new file mode 100644 index 0000000000..895881141a --- /dev/null +++ b/indra/cmake/Audio.cmake @@ -0,0 +1,32 @@ +# -*- cmake -*- + +if (STANDALONE) +  include(FindPkgConfig) +  pkg_check_modules(OGG REQUIRED ogg) +  pkg_check_modules(VORBIS REQUIRED vorbis) +  pkg_check_modules(VORBISENC REQUIRED vorbisenc) +  pkg_check_modules(VORBISFILE REQUIRED vorbisfile) +else (STANDALONE) +  set(VORBIS_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +  set(VORBISENC_INCLUDE_DIRS ${VORBIS_INCLUDE_DIRS}) +  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) +  else (WINDOWS) +    set(OGG_LIBRARIES ogg) +    set(VORBIS_LIBRARIES vorbis) +    set(VORBISENC_LIBRARIES vorbisenc) +    set(VORBISFILE_LIBRARIES vorbisfile) +  endif (WINDOWS) +endif (STANDALONE) + +link_directories( +    ${VORBIS_LIBRARY_DIRS} +    ${VORBISENC_LIBRARY_DIRS} +    ${VORBISFILE_LIBRARY_DIRS} +    ${OGG_LIBRARY_DIRS} +    ) diff --git a/indra/cmake/BerkeleyDB.cmake b/indra/cmake/BerkeleyDB.cmake new file mode 100644 index 0000000000..d98e79179d --- /dev/null +++ b/indra/cmake/BerkeleyDB.cmake @@ -0,0 +1,11 @@ +# -*- cmake -*- + +set(DB_FIND_QUIETLY ON) +set(DB_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindBerkeleyDB) +else (STANDALONE) +  set(DB_LIBRARIES db-4.2) +  set(DB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake new file mode 100644 index 0000000000..40f23eb8ca --- /dev/null +++ b/indra/cmake/Boost.cmake @@ -0,0 +1,56 @@ +# -*- cmake -*- + +set(Boost_FIND_QUIETLY ON) +set(Boost_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindBoost) + +  set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt) +  set(BOOST_REGEX_LIBRARY boost_regex-mt) +  set(BOOST_SIGNALS_LIBRARY boost_signals-mt) +else (STANDALONE) +  set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) + +  if (WINDOWS) +    set(BOOST_VERSION 1_34_1) +    if (MSVC71) +      set(BOOST_PROGRAM_OPTIONS_LIBRARY  +          optimized libboost_program_options-vc71-mt-s-${BOOST_VERSION} +          debug libboost_program_options-vc71-mt-sgd-${BOOST_VERSION}) +      set(BOOST_REGEX_LIBRARY +          optimized libboost_regex-vc71-mt-s-${BOOST_VERSION} +          debug libboost_regex-vc71-mt-sgd-${BOOST_VERSION}) +      set(BOOST_SIGNALS_LIBRARY  +          optimized libboost_signals-vc71-mt-s-${BOOST_VERSION} +          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}) +      set(BOOST_REGEX_LIBRARY +          optimized libboost_regex-vc80-mt-s-${BOOST_VERSION} +          debug libboost_regex-vc80-mt-sgd-${BOOST_VERSION}) +      set(BOOST_SIGNALS_LIBRARY  +          optimized libboost_signals-vc80-mt-s-${BOOST_VERSION} +          debug libboost_signals-vc80-mt-sgd-${BOOST_VERSION}) +    endif (MSVC71) +  elseif (DARWIN) +    set(BOOST_PROGRAM_OPTIONS_LIBRARY +      optimized boost_program_options-mt +      debug boost_program_options-mt-d +      ) +    set(BOOST_REGEX_LIBRARY +      optimized boost_regex-mt +      debug boost_regex-mt-d +      ) +    set(BOOST_SIGNALS_LIBRARY +      optimized boost_signals-mt +      debug boost_signals-mt-d +      ) +  elseif (LINUX) +    set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt) +    set(BOOST_REGEX_LIBRARY boost_regex-mt) +    set(BOOST_SIGNALS_LIBRARY boost_signals-mt) +  endif (WINDOWS) +endif (STANDALONE) diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake new file mode 100644 index 0000000000..60a519c9af --- /dev/null +++ b/indra/cmake/BuildVersion.cmake @@ -0,0 +1,18 @@ +# -*- cmake -*- + +include(Python) + +macro (build_version _target) +  execute_process( +      COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/build_version.py +        llversion${_target}.h ${LLCOMMON_INCLUDE_DIRS} +      OUTPUT_VARIABLE ${_target}_VERSION +      OUTPUT_STRIP_TRAILING_WHITESPACE +      ) + +  if (${_target}_VERSION) +    message(STATUS "Version of ${_target} is ${${_target}_VERSION}") +  else (${_target}_VERSION) +    message(SEND_ERROR "Could not determine ${_target} version") +  endif (${_target}_VERSION) +endmacro (build_version) diff --git a/indra/cmake/CARes.cmake b/indra/cmake/CARes.cmake new file mode 100644 index 0000000000..4dfcf588c6 --- /dev/null +++ b/indra/cmake/CARes.cmake @@ -0,0 +1,21 @@ +# -*- cmake -*- +include(Linking) + +set(CARES_FIND_QUIETLY ON) +set(CARES_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindCARes) +else (STANDALONE) +    if (WINDOWS) +        set(CARES_LIBRARIES areslib) +    elseif (DARWIN) +        set(CARES_LIBRARIES +          optimized ${ARCH_PREBUILT_DIRS_RELEASE}/cares +          debug ${ARCH_PREBUILT_DIRS_DEBUG}/cares +          ) +    else (WINDOWS) +        set(CARES_LIBRARIES cares) +    endif (WINDOWS) +    set(CARES_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/ares) +endif (STANDALONE) diff --git a/indra/cmake/CMakeCopyIfDifferent.cmake b/indra/cmake/CMakeCopyIfDifferent.cmake new file mode 100644 index 0000000000..abbd1d0653 --- /dev/null +++ b/indra/cmake/CMakeCopyIfDifferent.cmake @@ -0,0 +1,41 @@ +# -*- cmake -*- +# Taken from http://www.cmake.org/Wiki/CMakeCopyIfDifferent +# Generates a rule to copy each source file from source directory to destination directory. +# +# Typical use - +# +# SET(SRC_FILES head1.h head2.h head3.h) +# COPY_IF_DIFFERENT( /from_dir /to_dir IncludeTargets ${SRC_FILES}) +# ADD_TARGET(CopyIncludes ALL DEPENDS ${IncludeTargets}) + +MACRO(COPY_IF_DIFFERENT FROM_DIR TO_DIR TARGETS) +# Macro to implement copy_if_different for a list of files +# Arguments -  +#   FROM_DIR - this is the source directory +#   TO_DIR   - this is the destination directory +#   TARGETS  - A variable to receive a list of targets +#   FILES    - names of the files to copy  +#              TODO: add globing.  +SET(AddTargets "") +FOREACH(SRC ${ARGN}) +    GET_FILENAME_COMPONENT(SRCFILE ${SRC} NAME)  +    IF("${FROM_DIR}" STREQUAL "") +        SET(FROM ${SRC}) +    ELSE("${FROM_DIR}" STREQUAL "") +        SET(FROM ${FROM_DIR}/${SRC}) +    ENDIF("${FROM_DIR}" STREQUAL "")         +    IF("${TO_DIR}" STREQUAL "") +        SET(TO ${SRCFILE}) +    ELSE("${TO_DIR}" STREQUAL "") +        SET(TO   ${TO_DIR}/${SRCFILE}) +    ENDIF("${TO_DIR}" STREQUAL "") +    ADD_CUSTOM_COMMAND( +        OUTPUT  "${TO}" +        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FROM} ${TO} +        DEPENDS ${FROM} +        COMMENT "Copying ${SRCFILE} ${TO_DIR}" +        ) +    SET(AddTargets ${AddTargets} ${TARGET}) +ENDFOREACH(SRC ${ARGN}) +SET(${TARGETS} ${AddTargets}) +ENDMACRO(COPY_IF_DIFFERENT FROM_DIR TO_DIR TARGETS) diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt new file mode 100644 index 0000000000..9cc34ea159 --- /dev/null +++ b/indra/cmake/CMakeLists.txt @@ -0,0 +1,95 @@ +# -*- cmake -*- + +include(00-Common) + +project(cmake) + +set(cmake_SOURCE_FILES +    CMakeLists.txt + +    00-Common.cmake +    APR.cmake +    Audio.cmake +    BerkeleyDB.cmake +    Boost.cmake +    BuildVersion.cmake +    CARes.cmake +    CURL.cmake +    CMakeCopyIfDifferent.cmake +    DirectX.cmake +    ELFIO.cmake +    EXPAT.cmake +    FindAPR.cmake +    FindBerkeleyDB.cmake +    FindCARes.cmake +    FindELFIO.cmake +    FindGooglePerfTools.cmake +    FindMySQL.cmake +    FindOpenJPEG.cmake +    FindXmlRpcEpi.cmake +    FMOD.cmake +    FreeType.cmake +    GStreamer.cmake +    GooglePerfTools.cmake +    JPEG.cmake +    LLAudio.cmake +    LLCharacter.cmake +    LLCommon.cmake +    LLCrashLogger.cmake +    LLDatabase.cmake +    LLImage.cmake +    LLImageJ2COJ.cmake +    LLInventory.cmake +    LLKDU.cmake +    LLMath.cmake +    LLMedia.cmake +    LLMessage.cmake +    LLPhysics.cmake +    LLPrimitive.cmake +    LLRender.cmake +    LLScene.cmake +    LLUI.cmake +    LLVFS.cmake +    LLWindow.cmake +    LLXML.cmake +    LScript.cmake +    Linking.cmake +    Mozlib.cmake +    MySQL.cmake +    NDOF.cmake +    OpenGL.cmake +    OpenJPEG.cmake +    OpenSSL.cmake +    PNG.cmake +    Python.cmake +    QuickTime.cmake +    Smartheap.cmake +    TemplateCheck.cmake +    UI.cmake +    UnixInstall.cmake +    Variables.cmake +    XmlRpcEpi.cmake +    ZLIB.cmake +    ) + +source_group("Shared Rules" FILES ${cmake_SOURCE_FILES}) + +set(master_SOURCE_FILES +    ../CMakeLists.txt +    ../develop.py +    ) + +if (SERVER) +  list(APPEND master_SOURCE_FILES ../Server.cmake) +endif (SERVER) + +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 +            cmake_dummy.cpp +            ${cmake_SOURCE_FILES} +            ${master_SOURCE_FILES} +            ) diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake new file mode 100644 index 0000000000..bce4a85d16 --- /dev/null +++ b/indra/cmake/CURL.cmake @@ -0,0 +1,17 @@ +# -*- cmake -*- + +set(CURL_FIND_QUIETLY ON) +set(CURL_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindCURL) +else (STANDALONE) +  if (WINDOWS) +    set(CURL_LIBRARIES  +    debug libcurld +    optimized libcurl) +  else (WINDOWS) +    set(CURL_LIBRARIES curl) +  endif (WINDOWS) +  set(CURL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) diff --git a/indra/cmake/DirectX.cmake b/indra/cmake/DirectX.cmake new file mode 100644 index 0000000000..a011b318d5 --- /dev/null +++ b/indra/cmake/DirectX.cmake @@ -0,0 +1,34 @@ +# -*- cmake -*- + +if (VIEWER AND WINDOWS) +  find_path(DIRECTX_INCLUDE_DIR dxdiag.h +            "$ENV{DXSDK_DIR}/Include" +            "C:/Program Files/Microsoft DirectX SDK (March 2008)/Include" +            "C:/Program Files/Microsoft DirectX SDK (November 2007)/Include" +            "C:/DX90SDK/Include" +            ) +  if (DIRECTX_INCLUDE_DIR) +    include_directories(${DIRECTX_INCLUDE_DIR}) +    if (DIRECTX_FIND_QUIETLY) +      message(STATUS "Found DirectX include: ${DIRECTX_INCLUDE_DIR}") +    endif (DIRECTX_FIND_QUIETLY) +  else (DIRECTX_INCLUDE_DIR) +    message(FATAL_ERROR "Could not find DirectX SDK Include") +  endif (DIRECTX_INCLUDE_DIR) + + +  find_path(DIRECTX_LIBRARY_DIR dxguid.lib +            "$ENV{DXSDK_DIR}/Lib/x86" +            "C:/Program Files/Microsoft DirectX SDK (March 2008)/Lib/x86" +            "C:/Program Files/Microsoft DirectX SDK (November 2007)/Lib/x86" +            "C:/DX90SDK/Lib" +            ) +  if (DIRECTX_LIBRARY_DIR) +    if (DIRECTX_FIND_QUIETLY) +      message(STATUS "Found DirectX include: ${DIRECTX_LIBRARY_DIR}") +    endif (DIRECTX_FIND_QUIETLY) +  else (DIRECTX_LIBRARY_DIR) +    message(FATAL_ERROR "Could not find DirectX SDK Libraries") +  endif (DIRECTX_LIBRARY_DIR) + +endif (VIEWER AND WINDOWS) diff --git a/indra/cmake/ELFIO.cmake b/indra/cmake/ELFIO.cmake new file mode 100644 index 0000000000..2805842cbc --- /dev/null +++ b/indra/cmake/ELFIO.cmake @@ -0,0 +1,16 @@ +# -*- cmake -*- + +set(ELFIO_FIND_QUIETLY ON) + +if (STANDALONE) +  include(FindELFIO) +elseif (LINUX) +  set(ELFIO_LIBRARIES ELFIO) +  set(ELFIO_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) + +if (ELFIO_FOUND) +  add_definitions(-DLL_ELFBIN=1) +else (ELFIO_FOUND) +  set(ELFIO_INCLUDE_DIR "") +endif (ELFIO_FOUND) diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake new file mode 100644 index 0000000000..3010d63532 --- /dev/null +++ b/indra/cmake/EXPAT.cmake @@ -0,0 +1,15 @@ +# -*- cmake -*- + +set(EXPAT_FIND_QUIETLY ON) +set(EXPAT_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindEXPAT) +else (STANDALONE) +    if (WINDOWS) +        set(EXPAT_LIBRARIES libexpatMT) +    else (WINDOWS) +        set(EXPAT_LIBRARIES expat) +    endif (WINDOWS) +    set(EXPAT_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) diff --git a/indra/cmake/FMOD.cmake b/indra/cmake/FMOD.cmake new file mode 100644 index 0000000000..781c8babbe --- /dev/null +++ b/indra/cmake/FMOD.cmake @@ -0,0 +1,47 @@ +# -*- cmake -*- + +find_library(FMOD_LIBRARY +             NAMES fmod fmodvc fmod-3.75 +             PATHS +             optimized ${ARCH_PREBUILT_DIRS_RELEASE} +             debug ${ARCH_PREBUILT_DIRS_DEBUG} +             ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/release +             ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release +             ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release_client +             ) + +if (NOT FMOD_LIBRARY) +  set(FMOD_SDK_DIR CACHE PATH "Path to the FMOD SDK.") +  if (FMOD_SDK_DIR) +    find_library(FMOD_LIBRARY +                 NAMES fmodvc fmod-3.75 fmod +                 PATHS +                 ${FMOD_SDK_DIR}/api/lib +                 ${FMOD_SDK_DIR}/api +                 ${FMOD_SDK_DIR}/lib +                 ${FMOD_SDK_DIR} +                 ) +  endif (FMOD_SDK_DIR) +endif (NOT FMOD_LIBRARY) + +find_path(FMOD_INCLUDE_DIR fmod.h +          ${LIBS_PREBUILT_DIR}/include +          ${FMOD_SDK_DIR}/api/inc +          ${FMOD_SDK_DIR}/inc +          ${FMOD_SDK_DIR} +          ) + +if (FMOD_LIBRARY AND FMOD_INCLUDE_DIR) +  set(FMOD ON CACHE BOOL "Use closed source FMOD sound library.") +else (FMOD_LIBRARY AND FMOD_INCLUDE_DIR) +  set(FMOD_LIBRARY "") +  set(FMOD_INCLUDE_DIR "") +  if (FMOD) +    message(STATUS "No support for FMOD audio (need to set FMOD_SDK_DIR?)") +  endif (FMOD) +  set(FMOD OFF CACHE BOOL "Use closed source FMOD sound library.") +endif (FMOD_LIBRARY AND FMOD_INCLUDE_DIR) + +if (FMOD) +  message(STATUS "Building with FMOD audio support") +endif (FMOD) diff --git a/indra/cmake/FindAPR.cmake b/indra/cmake/FindAPR.cmake new file mode 100644 index 0000000000..906b6c9452 --- /dev/null +++ b/indra/cmake/FindAPR.cmake @@ -0,0 +1,94 @@ +# -*- 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 +  ) diff --git a/indra/cmake/FindBerkeleyDB.cmake b/indra/cmake/FindBerkeleyDB.cmake new file mode 100644 index 0000000000..2d633c74ec --- /dev/null +++ b/indra/cmake/FindBerkeleyDB.cmake @@ -0,0 +1,50 @@ +# -*- cmake -*- + +# - Find BerkeleyDB +# Find the BerkeleyDB includes and library +# This module defines +#  DB_INCLUDE_DIR, where to find db.h, etc. +#  DB_LIBRARIES, the libraries needed to use BerkeleyDB. +#  DB_FOUND, If false, do not try to use BerkeleyDB. +# also defined, but not for general use are +#  DB_LIBRARY, where to find the BerkeleyDB library. + +FIND_PATH(DB_INCLUDE_DIR db.h +/usr/local/include/db4 +/usr/local/include +/usr/include/db4 +/usr/include +) + +SET(DB_NAMES ${DB_NAMES} db) +FIND_LIBRARY(DB_LIBRARY +  NAMES ${DB_NAMES} +  PATHS /usr/lib /usr/local/lib +  ) + +IF (DB_LIBRARY AND DB_INCLUDE_DIR) +    SET(DB_LIBRARIES ${DB_LIBRARY}) +    SET(DB_FOUND "YES") +ELSE (DB_LIBRARY AND DB_INCLUDE_DIR) +  SET(DB_FOUND "NO") +ENDIF (DB_LIBRARY AND DB_INCLUDE_DIR) + + +IF (DB_FOUND) +   IF (NOT DB_FIND_QUIETLY) +      MESSAGE(STATUS "Found BerkeleyDB: ${DB_LIBRARIES}") +   ENDIF (NOT DB_FIND_QUIETLY) +ELSE (DB_FOUND) +   IF (DB_FIND_REQUIRED) +      MESSAGE(FATAL_ERROR "Could not find BerkeleyDB library") +   ENDIF (DB_FIND_REQUIRED) +ENDIF (DB_FOUND) + +# Deprecated declarations. +SET (NATIVE_DB_INCLUDE_PATH ${DB_INCLUDE_DIR} ) +GET_FILENAME_COMPONENT (NATIVE_DB_LIB_PATH ${DB_LIBRARY} PATH) + +MARK_AS_ADVANCED( +  DB_LIBRARY +  DB_INCLUDE_DIR +  ) diff --git a/indra/cmake/FindCARes.cmake b/indra/cmake/FindCARes.cmake new file mode 100644 index 0000000000..1ed5b32913 --- /dev/null +++ b/indra/cmake/FindCARes.cmake @@ -0,0 +1,48 @@ +# -*- cmake -*- + +# - Find c-ares +# Find the c-ares includes and library +# This module defines +#  CARES_INCLUDE_DIR, where to find ares.h, etc. +#  CARES_LIBRARIES, the libraries needed to use c-ares. +#  CARES_FOUND, If false, do not try to use c-ares. +# also defined, but not for general use are +#  CARES_LIBRARY, where to find the c-ares library. + +FIND_PATH(CARES_INCLUDE_DIR ares.h +/usr/local/include +/usr/include +) + +SET(CARES_NAMES ${CARES_NAMES} cares) +FIND_LIBRARY(CARES_LIBRARY +  NAMES ${CARES_NAMES} +  PATHS /usr/lib /usr/local/lib +  ) + +IF (CARES_LIBRARY AND CARES_INCLUDE_DIR) +    SET(CARES_LIBRARIES ${CARES_LIBRARY}) +    SET(CARES_FOUND "YES") +ELSE (CARES_LIBRARY AND CARES_INCLUDE_DIR) +  SET(CARES_FOUND "NO") +ENDIF (CARES_LIBRARY AND CARES_INCLUDE_DIR) + + +IF (CARES_FOUND) +   IF (NOT CARES_FIND_QUIETLY) +      MESSAGE(STATUS "Found c-ares: ${CARES_LIBRARIES}") +   ENDIF (NOT CARES_FIND_QUIETLY) +ELSE (CARES_FOUND) +   IF (CARES_FIND_REQUIRED) +      MESSAGE(FATAL_ERROR "Could not find c-ares library") +   ENDIF (CARES_FIND_REQUIRED) +ENDIF (CARES_FOUND) + +# Deprecated declarations. +SET (NATIVE_CARES_INCLUDE_PATH ${CARES_INCLUDE_DIR} ) +GET_FILENAME_COMPONENT (NATIVE_CARES_LIB_PATH ${CARES_LIBRARY} PATH) + +MARK_AS_ADVANCED( +  CARES_LIBRARY +  CARES_INCLUDE_DIR +  ) diff --git a/indra/cmake/FindELFIO.cmake b/indra/cmake/FindELFIO.cmake new file mode 100644 index 0000000000..8a5421ab9c --- /dev/null +++ b/indra/cmake/FindELFIO.cmake @@ -0,0 +1,48 @@ +# -*- cmake -*- + +# - Find ELFIO +# Find the ELFIO includes and library +# This module defines +#  ELFIO_INCLUDE_DIR, where to find elfio.h, etc. +#  ELFIO_LIBRARIES, the libraries needed to use ELFIO. +#  ELFIO_FOUND, If false, do not try to use ELFIO. +# also defined, but not for general use are +#  ELFIO_LIBRARY, where to find the ELFIO library. + +FIND_PATH(ELFIO_INCLUDE_DIR ELFIO/ELFIO.h +/usr/local/include +/usr/include +) + +SET(ELFIO_NAMES ${ELFIO_NAMES} ELFIO) +FIND_LIBRARY(ELFIO_LIBRARY +  NAMES ${ELFIO_NAMES} +  PATHS /usr/lib /usr/local/lib +  ) + +IF (ELFIO_LIBRARY AND ELFIO_INCLUDE_DIR) +    SET(ELFIO_LIBRARIES ${ELFIO_LIBRARY}) +    SET(ELFIO_FOUND "YES") +ELSE (ELFIO_LIBRARY AND ELFIO_INCLUDE_DIR) +  SET(ELFIO_FOUND "NO") +ENDIF (ELFIO_LIBRARY AND ELFIO_INCLUDE_DIR) + + +IF (ELFIO_FOUND) +   IF (NOT ELFIO_FIND_QUIETLY) +      MESSAGE(STATUS "Found ELFIO: ${ELFIO_LIBRARIES}") +   ENDIF (NOT ELFIO_FIND_QUIETLY) +ELSE (ELFIO_FOUND) +   IF (ELFIO_FIND_REQUIRED) +      MESSAGE(FATAL_ERROR "Could not find ELFIO library") +   ENDIF (ELFIO_FIND_REQUIRED) +ENDIF (ELFIO_FOUND) + +# Deprecated declarations. +SET (NATIVE_ELFIO_INCLUDE_PATH ${ELFIO_INCLUDE_DIR} ) +GET_FILENAME_COMPONENT (NATIVE_ELFIO_LIB_PATH ${ELFIO_LIBRARY} PATH) + +MARK_AS_ADVANCED( +  ELFIO_LIBRARY +  ELFIO_INCLUDE_DIR +  ) diff --git a/indra/cmake/FindGooglePerfTools.cmake b/indra/cmake/FindGooglePerfTools.cmake new file mode 100644 index 0000000000..bb125d538e --- /dev/null +++ b/indra/cmake/FindGooglePerfTools.cmake @@ -0,0 +1,66 @@ +# -*- 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 +  ) diff --git a/indra/cmake/FindMySQL.cmake b/indra/cmake/FindMySQL.cmake new file mode 100644 index 0000000000..431940328f --- /dev/null +++ b/indra/cmake/FindMySQL.cmake @@ -0,0 +1,48 @@ +# -*- cmake -*- + +# - Find MySQL +# Find the MySQL includes and library +# This module defines +#  MYSQL_INCLUDE_DIR, where to find mysql.h, etc. +#  MYSQL_LIBRARIES, the libraries needed to use Mysql. +#  MYSQL_FOUND, If false, do not try to use Mysql. +# also defined, but not for general use are +#  MYSQL_LIBRARY, where to find the Mysql library. + +FIND_PATH(MYSQL_INCLUDE_DIR mysql/mysql.h +/usr/local/include +/usr/include +) + +SET(MYSQL_NAMES ${MYSQL_NAMES} mysqlclient) +FIND_LIBRARY(MYSQL_LIBRARY +  NAMES ${MYSQL_NAMES} +  PATHS /usr/lib/mysql /usr/lib /usr/local/lib/mysql /usr/local/lib +  ) + +IF (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR) +    SET(MYSQL_LIBRARIES ${MYSQL_LIBRARY}) +    SET(MYSQL_FOUND "YES") +ELSE (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR) +  SET(MYSQL_FOUND "NO") +ENDIF (MYSQL_LIBRARY AND MYSQL_INCLUDE_DIR) + + +IF (MYSQL_FOUND) +   IF (NOT MYSQL_FIND_QUIETLY) +      MESSAGE(STATUS "Found MySQL: ${MYSQL_LIBRARIES}") +   ENDIF (NOT MYSQL_FIND_QUIETLY) +ELSE (MYSQL_FOUND) +   IF (MYSQL_FIND_REQUIRED) +      MESSAGE(FATAL_ERROR "Could not find MySQL library") +   ENDIF (MYSQL_FIND_REQUIRED) +ENDIF (MYSQL_FOUND) + +# Deprecated declarations. +SET (NATIVE_MYSQL_INCLUDE_PATH ${MYSQL_INCLUDE_DIR} ) +GET_FILENAME_COMPONENT (NATIVE_MYSQL_LIB_PATH ${MYSQL_LIBRARY} PATH) + +MARK_AS_ADVANCED( +  MYSQL_LIBRARY +  MYSQL_INCLUDE_DIR +  ) diff --git a/indra/cmake/FindOpenJPEG.cmake b/indra/cmake/FindOpenJPEG.cmake new file mode 100644 index 0000000000..949384eec4 --- /dev/null +++ b/indra/cmake/FindOpenJPEG.cmake @@ -0,0 +1,50 @@ +# -*- 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 +) + +SET(OPENJPEG_NAMES ${OPENJPEG_NAMES} openjpeg) +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 +  ) diff --git a/indra/cmake/FindXmlRpcEpi.cmake b/indra/cmake/FindXmlRpcEpi.cmake new file mode 100644 index 0000000000..ba217e7467 --- /dev/null +++ b/indra/cmake/FindXmlRpcEpi.cmake @@ -0,0 +1,48 @@ +# -*- 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 +  ) diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake new file mode 100644 index 0000000000..064135bcd1 --- /dev/null +++ b/indra/cmake/FreeType.cmake @@ -0,0 +1,18 @@ +# -*- cmake -*- + +if (STANDALONE) +  include(FindPkgConfig) + +  pkg_check_modules(FREETYPE REQUIRED freetype2) +else (STANDALONE) +  if (LINUX) +    set(FREETYPE_INCLUDE_DIRS +        ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) +  else (LINUX) +    set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +  endif (LINUX) + +  set(FREETYPE_LIBRARIES freetype) +endif (STANDALONE) + +link_directories(${FREETYPE_LIBRARY_DIRS}) diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake new file mode 100644 index 0000000000..61a2631a08 --- /dev/null +++ b/indra/cmake/GooglePerfTools.cmake @@ -0,0 +1,26 @@ +# -*- cmake -*- + +if (STANDALONE) +  include(FindGooglePerfTools) +else (STANDALONE) +  if (LINUX) +    set(TCMALLOC_LIBRARIES tcmalloc) +    set(STACKTRACE_LIBRARIES stacktrace) +    set(PROFILER_LIBRARIES profiler) +    set(GOOGLE_PERFTOOLS_INCLUDE_DIR +        ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) +    set(GOOGLE_PERFTOOLS_FOUND "YES") +  endif (LINUX) +endif (STANDALONE) + +if (GOOGLE_PERFTOOLS_FOUND) +  set(USE_GOOGLE_PERFTOOLS ON CACHE BOOL "Build with Google PerfTools support.") +endif (GOOGLE_PERFTOOLS_FOUND) + +if (USE_GOOGLE_PERFTOOLS) +  set(TCMALLOC_FLAG -DLL_USE_TCMALLOC=1) +  include_directories(${GOOGLE_PERFTOOLS_INCLUDE_DIR}) +  set(GOOGLE_PERFTOOLS_LIBRARIES ${TCMALLOC_LIBRARIES} ${STACKTRACE_LIBRARIES}) +else (USE_GOOGLE_PERFTOOLS) +  set(TCMALLOC_FLAG -ULL_USE_TCMALLOC) +endif (USE_GOOGLE_PERFTOOLS) diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake new file mode 100644 index 0000000000..18bdd8bc46 --- /dev/null +++ b/indra/cmake/JPEG.cmake @@ -0,0 +1,22 @@ +# -*- cmake -*- + +include(Linking) +set(JPEG_FIND_QUIETLY ON) +set(JPEG_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindJPEG) +else (STANDALONE) +  if (LINUX) +    set(JPEG_LIBRARIES jpeg) +  elseif (DARWIN) +    set(JPEG_LIBRARIES +      lljpeg +      optimized ${ARCH_PREBUILT_DIRS_RELEASE}/lljpeg +      debug ${ARCH_PREBUILT_DIRS_DEBUG}/lljpeg +      ) +  elseif (WINDOWS) +    set(JPEG_LIBRARIES jpeglib_6b) +  endif (LINUX) +  set(JPEG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) diff --git a/indra/cmake/LLAudio.cmake b/indra/cmake/LLAudio.cmake new file mode 100644 index 0000000000..7b9f2544dd --- /dev/null +++ b/indra/cmake/LLAudio.cmake @@ -0,0 +1,15 @@ +# -*- cmake -*- + +include(Audio) + +set(LLAUDIO_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llaudio +    ) + +set(LLAUDIO_LIBRARIES +    llaudio +    ${VORBISENC_LIBRARIES} +    ${VORBISFILE_LIBRARIES} +    ${VORBIS_LIBRARIES} +    ${OGG_LIBRARIES} +    ) diff --git a/indra/cmake/LLCharacter.cmake b/indra/cmake/LLCharacter.cmake new file mode 100644 index 0000000000..c74092cdd5 --- /dev/null +++ b/indra/cmake/LLCharacter.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- + +set(LLCHARACTER_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llcharacter +    ) + +set(LLCHARACTER_LIBRARIES +    llcharacter +    ) diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake new file mode 100644 index 0000000000..f4b251ebc8 --- /dev/null +++ b/indra/cmake/LLCommon.cmake @@ -0,0 +1,21 @@ +# -*- cmake -*- + +include(APR) +include(Boost) +include(EXPAT) +include(ZLIB) + +set(LLCOMMON_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llcommon +    ${APRUTIL_INCLUDE_DIR} +    ${APR_INCLUDE_DIR} +    ${Boost_INCLUDE_DIRS} +    ) + +set(LLCOMMON_LIBRARIES +    llcommon +    ${APRUTIL_LIBRARIES} +    ${APR_LIBRARIES} +    ${EXPAT_LIBRARIES} +    ${ZLIB_LIBRARIES} +    ) diff --git a/indra/cmake/LLCrashLogger.cmake b/indra/cmake/LLCrashLogger.cmake new file mode 100644 index 0000000000..7b362d084c --- /dev/null +++ b/indra/cmake/LLCrashLogger.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- + +set(LLCRASHLOGGER_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llcrashlogger +    ) + +set(LLCRASHLOGGER_LIBRARIES +    llcrashlogger +    ) diff --git a/indra/cmake/LLDatabase.cmake b/indra/cmake/LLDatabase.cmake new file mode 100644 index 0000000000..c3cf62233c --- /dev/null +++ b/indra/cmake/LLDatabase.cmake @@ -0,0 +1,13 @@ +# -*- cmake -*- + +include(MySQL) + +set(LLDATABASE_INCLUDE_DIRS +    ${LIBS_SERVER_DIR}/lldatabase +    ${MYSQL_INCLUDE_DIR} +    ) + +set(LLDATABASE_LIBRARIES +    lldatabase +    ${MYSQL_LIBRARIES} +    ) diff --git a/indra/cmake/LLImage.cmake b/indra/cmake/LLImage.cmake new file mode 100644 index 0000000000..8874fa54a8 --- /dev/null +++ b/indra/cmake/LLImage.cmake @@ -0,0 +1,15 @@ +# -*- cmake -*- + +include(JPEG) +include(PNG) + +set(LLIMAGE_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llimage +    ${JPEG_INCLUDE_DIRS} +    ) + +set(LLIMAGE_LIBRARIES +    llimage +    ${JPEG_LIBRARIES} +    ${PNG_LIBRARIES} +    ) diff --git a/indra/cmake/LLImageJ2COJ.cmake b/indra/cmake/LLImageJ2COJ.cmake new file mode 100644 index 0000000000..91973e0896 --- /dev/null +++ b/indra/cmake/LLImageJ2COJ.cmake @@ -0,0 +1,8 @@ +# -*- cmake -*- + +include(OpenJPEG) + +set(LLIMAGEJ2COJ_LIBRARIES +    llimagej2coj +    ${OPENJPEG_LIBRARIES} +    ) diff --git a/indra/cmake/LLInventory.cmake b/indra/cmake/LLInventory.cmake new file mode 100644 index 0000000000..7d5f492388 --- /dev/null +++ b/indra/cmake/LLInventory.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- + +set(LLINVENTORY_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llinventory +    ) + +set(LLINVENTORY_LIBRARIES +    llinventory +    ) diff --git a/indra/cmake/LLKDU.cmake b/indra/cmake/LLKDU.cmake new file mode 100644 index 0000000000..6ec14d2588 --- /dev/null +++ b/indra/cmake/LLKDU.cmake @@ -0,0 +1,18 @@ +# -*- cmake -*- + +if (NOT STANDALONE AND EXISTS ${LIBS_CLOSED_DIR}/llkdu) +  if (WINDOWS) +    set(KDU_LIBRARY debug kdu_cored optimized kdu_core) +  elseif (LINUX) +    set(KDU_LIBRARY kdu_v42R) +  else (WINDOWS) +    set(KDU_LIBRARY kdu) +  endif (WINDOWS) + +  set(KDU_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include) + +  set(LLKDU_LIBRARY llkdu) +  set(LLKDU_STATIC_LIBRARY llkdu_static) +  set(LLKDU_LIBRARIES ${LLKDU_LIBRARY}) +  set(LLKDU_STATIC_LIBRARIES ${LLKDU_STATIC_LIBRARY}) +endif (NOT STANDALONE AND EXISTS ${LIBS_CLOSED_DIR}/llkdu) diff --git a/indra/cmake/LLMath.cmake b/indra/cmake/LLMath.cmake new file mode 100644 index 0000000000..8afd45efc6 --- /dev/null +++ b/indra/cmake/LLMath.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- + +set(LLMATH_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llmath +    ) + +set(LLMATH_LIBRARIES +    llmath +    ) diff --git a/indra/cmake/LLMessage.cmake b/indra/cmake/LLMessage.cmake new file mode 100644 index 0000000000..1cea03af2b --- /dev/null +++ b/indra/cmake/LLMessage.cmake @@ -0,0 +1,22 @@ +# -*- cmake -*- + +include(CARes) +include(CURL) +include(OpenSSL) +include(XmlRpcEpi) + +set(LLMESSAGE_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llmessage +    ${CARES_INCLUDE_DIRS} +    ${CURL_INCLUDE_DIRS} +    ${OPENSSL_INCLUDE_DIRS} +    ) + +set(LLMESSAGE_LIBRARIES +    llmessage +    ${CURL_LIBRARIES} +    ${CARES_LIBRARIES} +    ${OPENSSL_LIBRARIES} +    ${CRYPTO_LIBRARIES} +    ${XMLRPCEPI_LIBRARIES} +    ) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake new file mode 100644 index 0000000000..0426ae539a --- /dev/null +++ b/indra/cmake/LLPrimitive.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- + +set(LLPRIMITIVE_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llprimitive +    ) + +set(LLPRIMITIVE_LIBRARIES +    llprimitive +    ) diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake new file mode 100644 index 0000000000..8fda6c1d6a --- /dev/null +++ b/indra/cmake/LLRender.cmake @@ -0,0 +1,11 @@ +# -*- cmake -*- + +include(FreeType) + +set(LLRENDER_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llrender +    ) + +set(LLRENDER_LIBRARIES +    llrender +    ) diff --git a/indra/cmake/LLScene.cmake b/indra/cmake/LLScene.cmake new file mode 100644 index 0000000000..d1c32b3199 --- /dev/null +++ b/indra/cmake/LLScene.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- + +set(LLSCENE_INCLUDE_DIRS +    ${LIBS_SERVER_DIR}/llscene +    ) + +set(LLSCENE_LIBRARIES +    llscene +    ) diff --git a/indra/cmake/LLUI.cmake b/indra/cmake/LLUI.cmake new file mode 100644 index 0000000000..d1287de018 --- /dev/null +++ b/indra/cmake/LLUI.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- + +set(LLUI_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llui +    ) + +set(LLUI_LIBRARIES +    llui +    ) diff --git a/indra/cmake/LLVFS.cmake b/indra/cmake/LLVFS.cmake new file mode 100644 index 0000000000..5ce3d2578e --- /dev/null +++ b/indra/cmake/LLVFS.cmake @@ -0,0 +1,13 @@ +# -*- cmake -*- + +set(LLVFS_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llvfs +    ) + +set(LLVFS_LIBRARIES llvfs) + +if (DARWIN) +  include(CMakeFindFrameworks) +  find_library(CARBON_LIBRARY Carbon) +  list(APPEND LLVFS_LIBRARIES ${CARBON_LIBRARY}) +endif (DARWIN) diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake new file mode 100644 index 0000000000..7a1ecaf0b1 --- /dev/null +++ b/indra/cmake/LLWindow.cmake @@ -0,0 +1,40 @@ +# -*- cmake -*- + +include(OpenGL) + +if (STANDALONE) +  include(FindSDL) + +  # This should be done by FindSDL.  Sigh. +  mark_as_advanced( +      SDLMAIN_LIBRARY +      SDL_INCLUDE_DIR +      SDL_LIBRARY +      ) +else (STANDALONE) +  if (LINUX AND VIEWER) +    set (SDL_FOUND TRUE) +    set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/i686-linux) +    set (SDL_LIBRARY SDL) +  endif (LINUX AND VIEWER) +endif (STANDALONE) + +if (SDL_FOUND) +  add_definitions(-DLL_SDL=1) +  include_directories(${SDL_INCLUDE_DIR}) +endif (SDL_FOUND) + +set(LLWINDOW_INCLUDE_DIRS +    ${GLEXT_INCLUDE_DIR} +    ${LIBS_OPEN_DIR}/llwindow +    ) + +if (SERVER AND LINUX) +  set(LLWINDOW_LIBRARIES +      llwindowheadless +      ) +else (SERVER AND LINUX) +  set(LLWINDOW_LIBRARIES +      llwindow +      ) +endif (SERVER AND LINUX) diff --git a/indra/cmake/LLXML.cmake b/indra/cmake/LLXML.cmake new file mode 100644 index 0000000000..1ce93c0abc --- /dev/null +++ b/indra/cmake/LLXML.cmake @@ -0,0 +1,13 @@ +# -*- cmake -*- + +include(EXPAT) + +set(LLXML_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/llxml +    ${EXPAT_INCLUDE_DIRS} +    ) + +set(LLXML_LIBRARIES +    llxml +    ${EXPAT_LIBRARIES} +    ) diff --git a/indra/cmake/LScript.cmake b/indra/cmake/LScript.cmake new file mode 100644 index 0000000000..227e4aaeda --- /dev/null +++ b/indra/cmake/LScript.cmake @@ -0,0 +1,13 @@ +# -*- cmake -*- + +set(LSCRIPT_INCLUDE_DIRS +    ${LIBS_OPEN_DIR}/lscript +    ${LIBS_OPEN_DIR}/lscript/lscript_compile +    ${LIBS_OPEN_DIR}/lscript/lscript_execute +    ) + +set(LSCRIPT_LIBRARIES +    lscript_compile +    lscript_execute +    lscript_library +    ) diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake new file mode 100644 index 0000000000..3146016b9a --- /dev/null +++ b/indra/cmake/Linking.cmake @@ -0,0 +1,43 @@ +# -*- cmake -*- + +if (NOT STANDALONE) +  if (WINDOWS) +    set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib) +    set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/release) +    set(ARCH_PREBUILT_DIRS_DEBUG ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/debug) +  elseif (LINUX) +    if (VIEWER) +      set(ARCH_PREBUILT_DIRS  +          ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release_client) +    else (VIEWER) +      set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release) +    endif (VIEWER) +  elseif (DARWIN) +    set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release) +    set(ARCH_PREBUILT_DIRS_DEBUG ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_debug) +  endif (WINDOWS) +endif (NOT STANDALONE) + +link_directories(${ARCH_PREBUILT_DIRS}) + +if (LINUX) +  set(DL_LIBRARY dl) +  set(PTHREAD_LIBRARY pthread) +else (LINUX) +  set(DL_LIBRARY "") +  set(PTHREAD_LIBRARY "") +endif (LINUX) + +if (WINDOWS) +  set(WINDOWS_LIBRARIES +      ws2_32 +      mswsock +      psapi +      winmm +      netapi32 +      ) +else (WINDOWS) +  set(WINDOWS_LIBRARIES "") +endif (WINDOWS) +     +mark_as_advanced(DL_LIBRARY PTHREAD_LIBRARY WINDOWS_LIBRARIES) diff --git a/indra/cmake/MySQL.cmake b/indra/cmake/MySQL.cmake new file mode 100644 index 0000000000..7dc638ec57 --- /dev/null +++ b/indra/cmake/MySQL.cmake @@ -0,0 +1,20 @@ +# -*- cmake -*- +include(Linking) +# We don't prebuild our own MySQL client library. + +set(MYSQL_FIND_QUIETLY ON) +set(MYSQL_FIND_REQUIRED ON) + +if (WINDOWS) +  set(MYSQL_LIBRARIES mysqlclient) +  set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) +elseif (DARWIN) +  set(MYSQL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) +  set(MYSQL_LIBRARIES +    optimized ${LIBS_PREBUILT_DIRS_RELEASE}/mysqlclient +    debug ${LIBS_PREBUILT_DIRS_DEBUG}/mysqlclient +    ) +else (WINDOWS) +    set(MYSQL_FIND_REQUIRED) +    include(FindMySQL) +endif (WINDOWS) diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake new file mode 100644 index 0000000000..22e9787653 --- /dev/null +++ b/indra/cmake/NDOF.cmake @@ -0,0 +1,11 @@ +# -*- cmake -*- + +if (WINDOWS OR DARWIN) +  add_definitions(-DLIB_NDOF=1) +endif (WINDOWS OR DARWIN) + +if (WINDOWS) +  set(NDOF_LIBRARY libndofdev) +elseif (DARWIN) +  set(NDOF_LIBRARY ndofdev) +endif (WINDOWS) diff --git a/indra/cmake/OpenGL.cmake b/indra/cmake/OpenGL.cmake new file mode 100644 index 0000000000..7395d478fe --- /dev/null +++ b/indra/cmake/OpenGL.cmake @@ -0,0 +1,5 @@ +# -*- cmake -*- + +if (NOT STANDALONE) +  set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) +endif (NOT STANDALONE)
\ No newline at end of file diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake new file mode 100644 index 0000000000..32dcb505aa --- /dev/null +++ b/indra/cmake/OpenJPEG.cmake @@ -0,0 +1,20 @@ +# -*- cmake -*- + +set(OPENJPEG_FIND_QUIETLY ON) +set(OPENJPEG_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindOpenJPEG) +else (STANDALONE) +   +  if(WINDOWS) +    # Windows has differently named release and debug openjpeg(d) libs. +    set(OPENJPEG_LIBRARIES  +        debug openjpegd +        optimized openjpeg) +  else(WINDOWS) +    set(OPENJPEG_LIBRARIES openjpeg) +  endif(WINDOWS) +   +    set(OPENJPEG_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/openjpeg) +endif (STANDALONE) diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake new file mode 100644 index 0000000000..715af3ba54 --- /dev/null +++ b/indra/cmake/OpenSSL.cmake @@ -0,0 +1,21 @@ +# -*- cmake -*- + +set(OpenSSL_FIND_QUIETLY ON) +set(OpenSSL_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindOpenSSL) +else (STANDALONE) +  if (WINDOWS) +    set(OPENSSL_LIBRARIES ssleay32 libeay32) +  else (WINDOWS) +    set(OPENSSL_LIBRARIES ssl) +  endif (WINDOWS) +  set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) +endif (STANDALONE) + +if (LINUX) +  set(CRYPTO_LIBRARIES crypto) +elseif (DARWIN) +  set(CRYPTO_LIBRARIES llcrypto) +endif (LINUX) diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake new file mode 100644 index 0000000000..b4f7e5e66b --- /dev/null +++ b/indra/cmake/PNG.cmake @@ -0,0 +1,11 @@ +# -*- cmake -*- + +set(PNG_FIND_QUIETLY ON) +set(PNG_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindPNG) +else (STANDALONE) +  set(PNG_LIBRARIES png12) +  set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake new file mode 100644 index 0000000000..2f4fbd05c7 --- /dev/null +++ b/indra/cmake/Prebuilt.cmake @@ -0,0 +1,17 @@ +# -*- cmake -*- + +include(Python) + +macro (use_prebuilt_library _lib) +  if (NOT STANDALONE) +    exec_program(${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR} +                 ARGS +                 --install-dir=${LIBS_PREBUILT_DIR} ${_lib}/${ARCH} +                 RETURN_VALUE _installed +                 ) +    if (NOT _installed) +      message(FATAL_ERROR +              "Failed to download or unpack prebuilt ${_lib} for ${ARCH}") +    endif (NOT _installed) +  endif (NOT STANDALONE) +endmacro (use_prebuilt_library _lib) diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake new file mode 100644 index 0000000000..895b353dbd --- /dev/null +++ b/indra/cmake/Python.cmake @@ -0,0 +1,32 @@ +# -*- cmake -*- + +set(PYTHONINTERP_FOUND) + +if (WINDOWS) +  # On Windows, explicitly avoid Cygwin Python. + +  find_program(PYTHON_EXECUTABLE +    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.5\\InstallPath] +    [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] +    [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] +    ) +elseif (EXISTS /etc/debian_version) +  # On Debian and Ubuntu, avoid Python 2.4 if possible. + +  find_program(PYTHON_EXECUTABLE python2.5 python2.3 python PATHS /usr/bin) + +  if (PYTHON_EXECUTABLE) +    set(PYTHONINTERP_FOUND ON) +  endif (PYTHON_EXECUTABLE) +else (WINDOWS) +  include(FindPythonInterp) +endif (WINDOWS) + +if (NOT PYTHON_EXECUTABLE) +  message(FATAL_ERROR "No Python interpreter found") +endif (NOT PYTHON_EXECUTABLE) + +mark_as_advanced(PYTHON_EXECUTABLE) diff --git a/indra/cmake/TemplateCheck.cmake b/indra/cmake/TemplateCheck.cmake new file mode 100644 index 0000000000..3b73dc82df --- /dev/null +++ b/indra/cmake/TemplateCheck.cmake @@ -0,0 +1,14 @@ +# -*- cmake -*- + +include(Python) + +macro (check_message_template _target) +  add_custom_command( +      TARGET ${_target} +      PRE_LINK +      COMMAND ${PYTHON_EXECUTABLE} +      ARGS ${SCRIPTS_DIR}/template_verifier.py +           --mode=development --cache_master +      COMMENT "Verifying message template" +      ) +endmacro (check_message_template) diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake new file mode 100644 index 0000000000..7d2955ce36 --- /dev/null +++ b/indra/cmake/UI.cmake @@ -0,0 +1,62 @@ +# -*- cmake -*- + +if (STANDALONE) +  include(FindPkgConfig) +     +  if (LINUX) +    set(PKGCONFIG_PACKAGES +        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}) +    pkg_check_modules(${pkg} REQUIRED ${pkg}) +    include_directories(${${pkg}_INCLUDE_DIRS}) +    link_directories(${${pkg}_LIBRARY_DIRS}) +    list(APPEND UI_LIBRARIES ${${pkg}_LIBRARIES}) +    add_definitions(${${pkg}_CFLAGS_OTHERS}) +  endforeach(pkg) +else (STANDALONE) +  if (LINUX) +    set(UI_LIBRARIES +        atk-1.0 +        gdk-x11-2.0 +        gdk_pixbuf-2.0 +        Xinerama +        glib-2.0 +        gmodule-2.0 +        gobject-2.0 +        gthread-2.0 +        gtk-x11-2.0 +        pango-1.0 +        pangoft2-1.0 +        pangox-1.0 +        pangoxft-1.0 +        ) +  endif (LINUX) + +  include_directories ( +      ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include +      ${LIBS_PREBUILT_DIR}/include +      ) +  foreach(include ${${LL_ARCH}_INCLUDES}) +      include_directories(${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/${include}) +  endforeach(include) +endif (STANDALONE) + +if (LINUX) +  add_definitions(-DLL_GTK=1 -DLL_X11=1) +endif (LINUX) diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake new file mode 100644 index 0000000000..139be0a008 --- /dev/null +++ b/indra/cmake/UnixInstall.cmake @@ -0,0 +1,31 @@ +if (NOT ${viewer_VERSION}) +  MESSAGE(FATAL_ERROR "Viewer version not known!") +endif (NOT ${viewer_VERSION}) + +set(INSTALL OFF CACHE BOOL +    "Generate install target.") + +if (INSTALL) +  set(INSTALL_PREFIX /usr CACHE PATH +      "Top-level installation directory.") + +  if (EXISTS /lib64) +    set(_LIB lib64) +  else (EXISTS /lib64) +    set(_LIB lib) +  endif (EXISTS /lib64) + +  set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB} CACHE PATH +      "Installation directory for read-only shared files.") + +  set(INSTALL_SHARE_DIR ${INSTALL_PREFIX}/share CACHE PATH +      "Installation directory for read-only shared files.") + +  set(APP_BINARY_DIR ${INSTALL_LIBRARY_DIR}/secondlife-${viewer_VERSION} +      CACHE PATH +      "Installation directory for binaries.") + +  set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/secondlife-${viewer_VERSION} +      CACHE PATH +      "Installation directory for read-only data files.") +endif (INSTALL) diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake new file mode 100644 index 0000000000..7e10f27418 --- /dev/null +++ b/indra/cmake/Variables.cmake @@ -0,0 +1,81 @@ +# -*- cmake -*- +# +# Definitions of variables used throughout the Second Life build +# process. +# +# Platform variables: +# +#   DARWIN  - Mac OS X +#   LINUX   - Linux +#   WINDOWS - Windows +# +# What to build: +# +#   VIEWER - viewer and other viewer-side components +#   SERVER - simulator and other server-side bits + + +# Relative and absolute paths to subtrees. + +set(LIBS_CLOSED_PREFIX) +set(LIBS_OPEN_PREFIX) +set(LIBS_SERVER_PREFIX) +set(SCRIPTS_PREFIX ../scripts) +set(SERVER_PREFIX) +set(VIEWER_PREFIX) + +set(LIBS_CLOSED_DIR ${CMAKE_SOURCE_DIR}/${LIBS_CLOSED_PREFIX}) +set(LIBS_OPEN_DIR ${CMAKE_SOURCE_DIR}/${LIBS_OPEN_PREFIX}) +set(LIBS_SERVER_DIR ${CMAKE_SOURCE_DIR}/${LIBS_SERVER_PREFIX}) +set(SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/${SCRIPTS_PREFIX}) +set(SERVER_DIR ${CMAKE_SOURCE_DIR}/${SERVER_PREFIX}) +set(VIEWER_DIR ${CMAKE_SOURCE_DIR}/${VIEWER_PREFIX}) + +set(LIBS_PREBUILT_DIR ${CMAKE_SOURCE_DIR}/../libraries CACHE PATH +    "Location of prebuilt libraries.") + + +if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") +  set(WINDOWS ON BOOL FORCE) +  set(ARCH i686) +  set(LL_ARCH ${ARCH}_win32) +  set(LL_ARCH_DIR ${ARCH}-win32) +endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows") + +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") +  set(LINUX ON BOOl FORCE) +  execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/ +                  OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) +  set(LL_ARCH ${ARCH}_linux) +  set(LL_ARCH_DIR ${ARCH}-linux) +endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +  set(DARWIN 1) +  set(ARCH universal) +  set(LL_ARCH ${ARCH}_darwin) +  set(LL_ARCH_DIR ${ARCH}-darwin) +  set(CMAKE_OSX_ARCHITECTURES i386;ppc) +  set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.4u.sdk) +endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + + +set(VIEWER ON CACHE BOOL "Build Second Life viewer.") + + +set(STANDALONE OFF CACHE BOOL "Do not use Linden-supplied prebuilt libraries.") + +if (NOT STANDALONE AND EXISTS ${LIBS_PREBUILT_DIR}/include/havok) +    set(SERVER ON CACHE BOOL "Build Second Life server software.") +endif (NOT STANDALONE AND EXISTS ${LIBS_PREBUILT_DIR}/include/havok) + +if (LINUX AND SERVER AND VIEWER) +  MESSAGE(FATAL_ERROR " +The indra source does not currently support building SERVER and VIEWER at the same time. +Please set one of these values to OFF in your CMake cache file. +(either by running ccmake or by editing CMakeCache.txt by hand) +For more information, please see JIRA DEV-14943 - Cmake Linux cannot build both VIEWER and SERVER in one build environment +  ") +endif (LINUX AND SERVER AND VIEWER) + +source_group("CMake Rules" FILES CMakeLists.txt) diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake new file mode 100644 index 0000000000..3fd6f80eb9 --- /dev/null +++ b/indra/cmake/XmlRpcEpi.cmake @@ -0,0 +1,15 @@ +# -*- cmake -*- + +set(XMLRPCEPI_FIND_QUIETLY ON) +set(XMLRPCEPI_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindXmlRpcEpi) +else (STANDALONE) +    if (WINDOWS) +        set(XMLRPCEPI_LIBRARIES xmlrpcepi) +    else (WINDOWS) +        set(XMLRPCEPI_LIBRARIES xmlrpc-epi) +    endif (WINDOWS) +    set(XMLRPCEPI_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) diff --git a/indra/cmake/ZLIB.cmake b/indra/cmake/ZLIB.cmake new file mode 100644 index 0000000000..3740103a72 --- /dev/null +++ b/indra/cmake/ZLIB.cmake @@ -0,0 +1,15 @@ +# -*- cmake -*- + +set(ZLIB_FIND_QUIETLY ON) +set(ZLIB_FIND_REQUIRED ON) + +if (STANDALONE) +  include(FindZLIB) +else (STANDALONE) +  if (WINDOWS) +    set(ZLIB_LIBRARIES zlib) +  else (WINDOWS) +    set(ZLIB_LIBRARIES z) +  endif (WINDOWS) +  set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) +endif (STANDALONE) diff --git a/indra/cmake/cmake_dummy.cpp b/indra/cmake/cmake_dummy.cpp new file mode 100644 index 0000000000..183bd746d1 --- /dev/null +++ b/indra/cmake/cmake_dummy.cpp @@ -0,0 +1,29 @@ +/**  + * @file cmake_dummy.cpp + * + * $LicenseInfo:firstyear=2008&license=viewergpl$ + *  + * Copyright (c) 2008, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */  | 
