diff options
Diffstat (limited to 'indra/cmake')
| -rw-r--r-- | indra/cmake/00-Common.cmake | 111 | ||||
| -rw-r--r-- | indra/cmake/Audio.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/Boost.cmake | 6 | ||||
| -rw-r--r-- | indra/cmake/CEFPlugin.cmake | 6 | ||||
| -rw-r--r-- | indra/cmake/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | indra/cmake/ConfigurePkgConfig.cmake | 74 | ||||
| -rw-r--r-- | indra/cmake/Copy3rdPartyLibs.cmake | 10 | ||||
| -rw-r--r-- | indra/cmake/FindPipeWire.cmake | 100 | ||||
| -rw-r--r-- | indra/cmake/FreeType.cmake | 27 | ||||
| -rw-r--r-- | indra/cmake/GLIB.cmake | 22 | ||||
| -rw-r--r-- | indra/cmake/GStreamer10Plugin.cmake | 27 | ||||
| -rw-r--r-- | indra/cmake/GoogleMock.cmake | 32 | ||||
| -rw-r--r-- | indra/cmake/JsonCpp.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/LLAddBuildTest.cmake | 14 | ||||
| -rw-r--r-- | indra/cmake/LLWindow.cmake | 12 | ||||
| -rw-r--r-- | indra/cmake/Linker.cmake | 11 | ||||
| -rw-r--r-- | indra/cmake/Meshoptimizer.cmake | 2 | ||||
| -rw-r--r-- | indra/cmake/NDOF.cmake | 4 | ||||
| -rw-r--r-- | indra/cmake/UI.cmake | 44 | ||||
| -rw-r--r-- | indra/cmake/Variables.cmake | 4 | ||||
| -rw-r--r-- | indra/cmake/ViewerMiscLibs.cmake | 8 | 
21 files changed, 292 insertions, 228 deletions
| diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index c345cfac5c..b7fb49dc55 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -15,6 +15,7 @@  include_guard()  include(Variables) +include(Linker)  # We go to some trouble to set LL_BUILD to the set of relevant compiler flags.  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{LL_BUILD}") @@ -103,61 +104,104 @@ if (WINDOWS)      string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")      string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")    endif() -endif (WINDOWS) +  # workaround for github runner image breakage: +  # https://github.com/actions/runner-images/issues/10004#issuecomment-2153445161 +  # can be removed after the above issue is resolved and deployed across GHA +  add_compile_definitions(_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR) +endif (WINDOWS)  if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -  set(CMAKE_SKIP_RPATH TRUE) - -   # EXTERNAL_TOS -   # force this platform to accept TOS via external browser +  set( CMAKE_BUILD_WITH_INSTALL_RPATH TRUE ) +  set( CMAKE_INSTALL_RPATH $ORIGIN $ORIGIN/../lib ) +  set(CMAKE_EXE_LINKER_FLAGS "-Wl,--exclude-libs,ALL") + +  find_program(CCACHE_EXE ccache) +  if(CCACHE_EXE AND NOT DISABLE_CCACHE) +    set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_EXE} ) +    set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_EXE} ) +  endif() -   # LL_IGNORE_SIGCHLD -   # don't catch SIGCHLD in our base application class for the viewer - some of -   # our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The -   # viewer doesn't need to catch SIGCHLD anyway. +  # LL_IGNORE_SIGCHLD +  # don't catch SIGCHLD in our base application class for the viewer - some of +  # our 3rd party libs may need their *own* SIGCHLD handler to work. Sigh! The +  # viewer doesn't need to catch SIGCHLD anyway.    add_compile_definitions(            _REENTRANT -          _FORTIFY_SOURCE=2 -          APPID=secondlife +          APPID=megapahit            LL_IGNORE_SIGCHLD    ) +  if( ENABLE_ASAN ) +      add_compile_options(-U_FORTIFY_SOURCE +        -fsanitize=address +        --param asan-stack=0 +      ) +      add_link_options(-fsanitize=address) +  else() +   add_compile_definitions( _FORTIFY_SOURCE=2 ) +  endif() +    if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")      add_compile_definitions(EXTERNAL_TOS)    endif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")    add_compile_options( -          -fexceptions -          -fno-math-errno -          -fno-strict-aliasing -          -fsigned-char -          -msse2 -          -mfpmath=sse -          -pthread -          -Wno-parentheses -          -Wno-deprecated -          -Wno-c++20-compat +      -fexceptions +      -fno-math-errno +      -fno-strict-aliasing +      -fsigned-char +      -msse2 +      -mfpmath=sse +      -pthread    )    if (NOT BUILD_SHARED_LIBS)      add_compile_options(-fvisibility=hidden)    endif (NOT BUILD_SHARED_LIBS) -  if (ADDRESS_SIZE EQUAL 32) -    add_compile_options(-march=pentium4) -  endif (ADDRESS_SIZE EQUAL 32) +  set(GCC_CLANG_COMPATIBLE_WARNINGS +      -Wno-parentheses +      -Wno-deprecated +      -Wno-c++20-compat +      -Wno-pessimizing-move +  ) + +  set(CLANG_WARNINGS +      ${GCC_CLANG_COMPATIBLE_WARNINGS} +      # Put clang specific warning configuration here +  ) + +  set(GCC_WARNINGS +      ${GCC_CLANG_COMPATIBLE_WARNINGS} +      -Wno-dangling-pointer +  ) + +  add_link_options( +          -Wl,--no-keep-memory +          -Wl,--build-id +          -Wl,--no-undefined +  ) +  if (NOT GCC_DISABLE_FATAL_WARNINGS) +    add_compile_options( -Werror ) +  endif (NOT GCC_DISABLE_FATAL_WARNINGS)    # this stops us requiring a really recent glibc at runtime    add_compile_options(-fno-stack-protector) -  # linking can be very memory-hungry, especially the final viewer link -  set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory") -  set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}") +  if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") +    # ND: clang is a bit more picky than GCC, the latter seems to auto include -lstdc++ and -lm. The former not so and thus fails to link +    add_link_options( +            -lstdc++ +            -lm +    ) +    add_compile_options(${CLANG_WARNINGS}) +  else() +    add_compile_options(${GCC_WARNINGS}) +  endif()  endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -  if (DARWIN)    # Warnings should be fatal -- thanks, Nicky Perian, for spotting reversed default    set(CLANG_DISABLE_FATAL_WARNINGS OFF) @@ -179,20 +223,11 @@ if (DARWIN)    # required for clang-15/xcode-15 since our boost package still uses deprecated std::unary_function/binary_function    # see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#C++-Standard-Library    add_compile_definitions(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) -endif (DARWIN) -if (LINUX OR DARWIN)    set(GCC_WARNINGS -Wall -Wno-sign-compare -Wno-trigraphs) -  if (NOT GCC_DISABLE_FATAL_WARNINGS) -    list(APPEND GCC_WARNINGS -Werror) -  endif (NOT GCC_DISABLE_FATAL_WARNINGS) -    list(APPEND GCC_WARNINGS -Wno-reorder -Wno-non-virtual-dtor )    add_compile_options(${GCC_WARNINGS})    add_compile_options(-m${ADDRESS_SIZE}) -endif (LINUX OR DARWIN) - - - +endif () diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake index 4c1a141dc5..4388e1e259 100644 --- a/indra/cmake/Audio.cmake +++ b/indra/cmake/Audio.cmake @@ -20,6 +20,6 @@ target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/inc  if (WINDOWS)    target_link_libraries(ll::vorbis INTERFACE ogg_static vorbis_static vorbisenc_static vorbisfile_static )  else (WINDOWS) -  target_link_libraries(ll::vorbis INTERFACE ogg vorbis vorbisenc vorbisfile ) +  target_link_libraries(ll::vorbis INTERFACE vorbisfile vorbis ogg vorbisenc )  endif (WINDOWS) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 0c5abd885c..c499807d75 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -42,14 +42,14 @@ if (WINDOWS)            libboost_thread-mt${addrsfx})  elseif (LINUX)    target_link_libraries( ll::boost INTERFACE -          boost_context-mt${addrsfx}            boost_fiber-mt${addrsfx} +          boost_context-mt${addrsfx}            boost_filesystem-mt${addrsfx}            boost_program_options-mt${addrsfx}            boost_regex-mt${addrsfx} -          boost_signals-mt${addrsfx} +          boost_thread-mt${addrsfx}            boost_system-mt${addrsfx} -          boost_thread-mt${addrsfx}) +  )  elseif (DARWIN)    target_link_libraries( ll::boost INTERFACE            boost_context-mt${addrsfx} diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index 2a1d30e548..7b0a945bc4 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -34,8 +34,8 @@ elseif (DARWIN)  elseif (LINUX)      target_link_libraries( ll::cef INTERFACE -        dullahan -        cef_dll_wrapper -        cef +            libdullahan.a +            cef +            cef_dll_wrapper.a      )  endif (WINDOWS) diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index df05032172..793ee1365f 100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -15,7 +15,6 @@ set(cmake_SOURCE_FILES          CEFPlugin.cmake          CEFPlugin.cmake          CMakeCopyIfDifferent.cmake -        ConfigurePkgConfig.cmake          CURL.cmake          Copy3rdPartyLibs.cmake          DBusGlib.cmake @@ -27,7 +26,6 @@ set(cmake_SOURCE_FILES          FreeType.cmake          GLEXT.cmake          GLH.cmake -        GoogleMock.cmake          Havok.cmake          Hunspell.cmake          JsonCpp.cmake diff --git a/indra/cmake/ConfigurePkgConfig.cmake b/indra/cmake/ConfigurePkgConfig.cmake deleted file mode 100644 index d64c1643ee..0000000000 --- a/indra/cmake/ConfigurePkgConfig.cmake +++ /dev/null @@ -1,74 +0,0 @@ -# -*- cmake -*- - -SET(DEBUG_PKG_CONFIG "YES") - -# Don't change this if manually set by user. -IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "") - -  # Guess at architecture-specific system library paths. -  if (ADDRESS_SIZE EQUAL 32) -    SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib32 /usr/lib) -    SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib32 /usr/local/lib) -    SET(PKG_CONFIG_MULTI_GUESS /usr/lib/i386-linux-gnu) -    SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/i386-linux-gnu) -  else (ADDRESS_SIZE EQUAL 32) -    SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib64 /usr/lib) -    SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib64 /usr/local/lib) -    SET(PKG_CONFIG_MULTI_GUESS /usr/lib/x86_64-linux-gnu) -    SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu) -  endif (ADDRESS_SIZE EQUAL 32) - -  # Use DPKG architecture, if available. -  IF (${DPKG_ARCH}) -    SET(PKG_CONFIG_MULTI_GUESS /usr/lib/${DPKG_ARCH}) -    SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usrlocal/lib/${DPKG_ARCH}) -  ENDIF (${DPKG_ARCH}) - -  # Explicitly include anything listed in PKG_CONFIG_PATH -  string(REPLACE ":" ";" PKG_CONFIG_PATH_LIST "$ENV{PKG_CONFIG_PATH}") -  FOREACH(PKG_CONFIG_DIR ${PKG_CONFIG_PATH_LIST}) -    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_DIR}/pkgconfig") -  ENDFOREACH(PKG_CONFIG_DIR) - -  # Look for valid pkgconfig directories. -  FIND_PATH(PKG_CONFIG_ENV pkgconfig ENV LD_LIBRARY_PATH) -  FIND_PATH(PKG_CONFIG_MULTI pkgconfig HINT ${PKG_CONFIG_MULTI_GUESS}) -  FIND_PATH(PKG_CONFIG_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_MULTI_LOCAL_GUESS}) -  FIND_PATH(PKG_CONFIG_NO_MULTI pkgconfig HINT ${PKG_CONFIG_NO_MULTI_GUESS}) -  FIND_PATH(PKG_CONFIG_NO_MULTI_LOCAL pkgconfig HINT ${PKG_CONFIG_NO_MULTI_LOCAL_GUESS}) - -  # Add anything we found to our list. -  IF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND) -    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_ENV}/pkgconfig") -  ENDIF(NOT PKG_CONFIG_ENV STREQUAL PKG_CONFIG_ENV-NOTFOUND) - -  IF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND) -    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI}/pkgconfig") -  ENDIF(NOT PKG_CONFIG_MULTI STREQUAL PKG_CONFIG_MULTI-NOTFOUND) - -  IF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND) -    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_MULTI_LOCAL}/pkgconfig") -  ENDIF(NOT PKG_CONFIG_MULTI_LOCAL STREQUAL PKG_CONFIG_MULTI_LOCAL-NOTFOUND) - -  IF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND) -    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI}/pkgconfig") -  ENDIF(NOT PKG_CONFIG_NO_MULTI STREQUAL PKG_CONFIG_NO_MULTI-NOTFOUND) - -  IF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND) -    SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:${PKG_CONFIG_NO_MULTI_LOCAL}/pkgconfig") -  ENDIF(NOT PKG_CONFIG_NO_MULTI_LOCAL STREQUAL PKG_CONFIG_NO_MULTI_LOCAL-NOTFOUND) - -  # Also add some non-architecture specific package locations. -  SET(VALID_PKG_LIBDIRS "${VALID_PKG_LIBDIRS}:/usr/share/pkgconfig:/usr/local/share/pkgconfig") - -  # Remove first unwanted ':' -  string(SUBSTRING ${VALID_PKG_LIBDIRS} 1 -1 VALID_PKG_LIBDIRS) - -  # Set PKG_CONFIG_LIBDIR environment. -  SET(ENV{PKG_CONFIG_LIBDIR} ${VALID_PKG_LIBDIRS}) -ENDIF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "") - -IF(DEBUG_PKG_CONFIG) -  MESSAGE(STATUS "Using PKG_CONFIG_LIBDIR=$ENV{PKG_CONFIG_LIBDIR}") -ENDIF(DEBUG_PKG_CONFIG) - diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 27b20ee3b1..a1a67512c4 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -215,17 +215,7 @@ elseif(LINUX)           list( APPEND release_files                   libapr-1.so.0                   libaprutil-1.so.0 -                 libatk-1.0.so -                 libfreetype.so.6.6.2 -                 libfreetype.so.6                   libhunspell-1.3.so.0.0.0 -                 libopenjp2.so -                 libuuid.so.16 -                 libuuid.so.16.0.22 -                 libfontconfig.so.1.8.0 -                 libfontconfig.so.1 -                 libgmodule-2.0.so -                 libgobject-2.0.so                   )       endif() diff --git a/indra/cmake/FindPipeWire.cmake b/indra/cmake/FindPipeWire.cmake new file mode 100644 index 0000000000..868acf5ec1 --- /dev/null +++ b/indra/cmake/FindPipeWire.cmake @@ -0,0 +1,100 @@ +# cmake-format: off +# .rst: FindPipeWire +# ------- +# +# Try to find PipeWire on a Unix system. +# +# This will define the following variables: +# +# ``PIPEWIRE_FOUND`` True if (the requested version of) PipeWire is available +# ``PIPEWIRE_VERSION`` The version of PipeWire ``PIPEWIRE_LIBRARIES`` This can +# be passed to target_link_libraries() instead of the ``PipeWire::PipeWire`` +# target ``PIPEWIRE_INCLUDE_DIRS`` This should be passed to +# target_include_directories() if the target is not used for linking +# ``PIPEWIRE_COMPILE_FLAGS`` This should be passed to target_compile_options() +# if the target is not used for linking +# +# If ``PIPEWIRE_FOUND`` is TRUE, it will also define the following imported +# target: +# +# ``PipeWire::PipeWire`` The PipeWire library +# +# In general we recommend using the imported target, as it is easier to use. +# Bear in mind, however, that if the target is in the link interface of an +# exported library, it must be made available by the package config file. + +# ============================================================================= +# Copyright 2014 Alex Merry <alex.merry@kde.org> Copyright 2014 Martin Gräßlin +# <mgraesslin@kde.org> Copyright 2018-2020 Jan Grulich <jgrulich@redhat.com> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the copyright notice, this list +#    of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright notice, this +#    list of conditions and the following disclaimer in the documentation and/or +#    other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +#    derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# ============================================================================= +# cmake-format: on + +# Use pkg-config to get the directories and then use these values in the FIND_PATH() and FIND_LIBRARY() calls +find_package(PkgConfig QUIET) + +pkg_search_module(PKG_PIPEWIRE QUIET libpipewire-0.3) +pkg_search_module(PKG_SPA QUIET libspa-0.2) + +set(PIPEWIRE_COMPILE_FLAGS "${PKG_PIPEWIRE_CFLAGS}" "${PKG_SPA_CFLAGS}") +set(PIPEWIRE_VERSION "${PKG_PIPEWIRE_VERSION}") + +find_path( +  PIPEWIRE_INCLUDE_DIRS +  NAMES pipewire/pipewire.h +  HINTS ${PKG_PIPEWIRE_INCLUDE_DIRS} ${PKG_PIPEWIRE_INCLUDE_DIRS}/pipewire-0.3) + +find_path( +  SPA_INCLUDE_DIRS +  NAMES spa/param/props.h +  HINTS ${PKG_SPA_INCLUDE_DIRS} ${PKG_SPA_INCLUDE_DIRS}/spa-0.2) + +find_library( +  PIPEWIRE_LIBRARIES +  NAMES pipewire-0.3 +  HINTS ${PKG_PIPEWIRE_LIBRARY_DIRS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( +  PipeWire +  FOUND_VAR PIPEWIRE_FOUND +  REQUIRED_VARS PIPEWIRE_LIBRARIES PIPEWIRE_INCLUDE_DIRS SPA_INCLUDE_DIRS +  VERSION_VAR PIPEWIRE_VERSION) + +if(PIPEWIRE_FOUND AND NOT TARGET PipeWire::PipeWire) +  add_library(PipeWire::PipeWire UNKNOWN IMPORTED) +  set_target_properties( +    PipeWire::PipeWire +    PROPERTIES IMPORTED_LOCATION "${PIPEWIRE_LIBRARIES}" +               INTERFACE_COMPILE_OPTIONS "${PIPEWIRE_COMPILE_FLAGS}" +               INTERFACE_INCLUDE_DIRECTORIES "${PIPEWIRE_INCLUDE_DIRS};${SPA_INCLUDE_DIRS}") +endif() + +mark_as_advanced(PIPEWIRE_LIBRARIES PIPEWIRE_INCLUDE_DIRS) + +include(FeatureSummary) +set_package_properties( +  PipeWire PROPERTIES +  URL "https://www.pipewire.org" +  DESCRIPTION "PipeWire - multimedia processing") diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index fbf188d100..82ba8fc06e 100644 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake @@ -4,17 +4,20 @@ include(Prebuilt)  include_guard()  add_library( ll::freetype INTERFACE IMPORTED ) -if (NOT (USE_AUTOBUILD_3P OR USE_CONAN)) -  include(FindPkgConfig) -  pkg_check_modules(Freetype REQUIRED freetype2) -  target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} ) -  target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} ) -  target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} ) -  return () +if (USESYSTEMLIBS) +    include(FindPkgConfig) +    pkg_check_modules(Freetype REQUIRED freetype2) +    target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} ) +    target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} ) +    target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} ) +    return ()  endif () -use_system_binary(freetype) -use_prebuilt_binary(freetype) -target_include_directories( ll::freetype SYSTEM INTERFACE  ${LIBS_PREBUILT_DIR}/include/freetype2/) -target_link_libraries( ll::freetype INTERFACE freetype ) - +    use_system_binary(freetype) +    use_prebuilt_binary(freetype) +    target_include_directories( ll::freetype SYSTEM INTERFACE  ${LIBS_PREBUILT_DIR}/include/freetype2/) +if( LINUX ) +    target_link_libraries( ll::freetype INTERFACE ${LIBS_PREBUILT_DIR}/lib/release/libfreetype.a ${LIBS_PREBUILT_DIR}/lib/release/libpng16.a) +else() +    target_link_libraries( ll::freetype INTERFACE freetype ) +endif() diff --git a/indra/cmake/GLIB.cmake b/indra/cmake/GLIB.cmake new file mode 100644 index 0000000000..f52cbb7f87 --- /dev/null +++ b/indra/cmake/GLIB.cmake @@ -0,0 +1,22 @@ +include_guard() + +include(Prebuilt) + +add_library( ll::glib INTERFACE IMPORTED ) +add_library( ll::glib_headers INTERFACE IMPORTED ) +add_library( ll::gio INTERFACE IMPORTED ) + +if( LINUX ) +  find_package(PkgConfig REQUIRED) +  pkg_search_module(GLIB REQUIRED glib-2.0) +  pkg_search_module(GIO REQUIRED gio-2.0) + +  target_include_directories( ll::glib SYSTEM INTERFACE ${GLIB_INCLUDE_DIRS}  ) +  target_link_libraries( ll::glib INTERFACE ${GLIB_LDFLAGS} ) +  target_compile_definitions( ll::glib INTERFACE -DLL_GLIB=1) + +  target_include_directories( ll::glib_headers SYSTEM INTERFACE ${GLIB_INCLUDE_DIRS}  ) +  target_compile_definitions( ll::glib_headers INTERFACE -DLL_GLIB=1) + +  target_link_libraries( ll::gio INTERFACE ${GIO_LDFLAGS} ) +endif() diff --git a/indra/cmake/GStreamer10Plugin.cmake b/indra/cmake/GStreamer10Plugin.cmake new file mode 100644 index 0000000000..160844ef68 --- /dev/null +++ b/indra/cmake/GStreamer10Plugin.cmake @@ -0,0 +1,27 @@ +# -*- cmake -*- + +include_guard() + +include(Prebuilt) +include(GLIB) + +add_library( ll::gstreamer10 INTERFACE IMPORTED ) + +if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") +  include(FindPkgConfig) + +  pkg_check_modules(GSTREAMER10 REQUIRED gstreamer-1.0) +  pkg_check_modules(GSTREAMER10_PLUGINS_BASE REQUIRED gstreamer-plugins-base-1.0) + +  target_include_directories( ll::gstreamer10 SYSTEM INTERFACE ${GSTREAMER10_INCLUDE_DIRS}) +  target_link_libraries( ll::gstreamer10 INTERFACE  ll::glib_headers) + +endif () + +if (GSTREAMER10_FOUND AND GSTREAMER10_PLUGINS_BASE_FOUND) +  set(GSTREAMER10 ON CACHE BOOL "Build with GStreamer-1.0 streaming media support.") +endif (GSTREAMER10_FOUND AND GSTREAMER10_PLUGINS_BASE_FOUND) + +if (GSTREAMER10) +  add_definitions(-DLL_GSTREAMER10_ENABLED=1) +endif (GSTREAMER10) diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake deleted file mode 100644 index c3d195c37b..0000000000 --- a/indra/cmake/GoogleMock.cmake +++ /dev/null @@ -1,32 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) -include(Linking) - -include_guard() - -add_library( ll::googlemock INTERFACE IMPORTED ) -if(USE_CONAN) -  target_link_libraries( ll::googlemock INTERFACE  CONAN_PKG::gtest ) - -  #Not very nice, but for the moment we need this for tut.hpp -  target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) -  return() -endif() - -use_prebuilt_binary(googlemock) - -target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) - -if (LINUX) -    # VWR-24366: gmock is underlinked, it needs gtest. -    target_link_libraries( ll::googlemock INTERFACE gmock gtest) -elseif(WINDOWS) -    target_link_libraries( ll::googlemock INTERFACE gmock) -    target_include_directories( ll::googlemock SYSTEM INTERFACE -            ${LIBS_PREBUILT_DIR}/include -            ${LIBS_PREBUILT_DIR}/include/gmock) -elseif(DARWIN) -    target_link_libraries( ll::googlemock INTERFACE gmock gtest) -endif(LINUX) - - diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake index 17f8e47a97..a9b992ab20 100644 --- a/indra/cmake/JsonCpp.cmake +++ b/indra/cmake/JsonCpp.cmake @@ -12,6 +12,6 @@ if (WINDOWS)  elseif (DARWIN)    target_link_libraries( ll::jsoncpp INTERFACE libjson_darwin_libmt.a )  elseif (LINUX) -  target_link_libraries( ll::jsoncpp INTERFACE libjson_linux-gcc-4.1.3_libmt.a ) +  target_link_libraries( ll::jsoncpp INTERFACE libjson_linux-gcc-11_libmt.a )  endif (WINDOWS)  target_include_directories( ll::jsoncpp SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index 2172b56da2..5d96a4398f 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -1,7 +1,13 @@  # -*- cmake -*- + +include_guard() + +if( NOT LL_TESTS ) +  return() +endif() +  include(00-Common)  include(LLTestCommand) -include(GoogleMock)  include(bugsplat)  include(Tut) @@ -19,10 +25,6 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources)    #    # More info and examples at: https://wiki.secondlife.com/wiki/How_to_add_unit_tests_to_indra_code -  # This here looks weird, but is needed. It will inject GoogleMock into projects that forgot to include `this` (LLAddBuildTest.cmake) -  # But through some other means have access to this macro -  include(GoogleMock) -    if(LL_TEST_VERBOSE)      message("LL_ADD_PROJECT_UNIT_TESTS UNITTEST_PROJECT_${project} sources: ${sources}")    endif() @@ -41,7 +43,6 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources)    set(alltest_LIBRARIES            llcommon -          ll::googlemock            )    if(NOT "${project}" STREQUAL "llmath")      # add llmath as a dep unless the tested module *is* llmath! @@ -204,7 +205,6 @@ FUNCTION(LL_ADD_INTEGRATION_TEST    set(libraries            ${library_dependencies} -          ll::googlemock            )    # Add test executable build target diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake index 1418518dc7..383051a4a6 100644 --- a/indra/cmake/LLWindow.cmake +++ b/indra/cmake/LLWindow.cmake @@ -23,13 +23,11 @@ endif ()  if (LINUX)    #Must come first as use_system_binary can exit this file early -  target_compile_definitions( ll::SDL INTERFACE LL_SDL=1) +  target_compile_definitions( ll::SDL INTERFACE LL_SDL_VERSION=2 LL_SDL) -  use_system_binary(SDL) -  use_prebuilt_binary(SDL) +  #find_package(SDL2 REQUIRED) +  #target_link_libraries( ll::SDL INTERFACE SDL2::SDL2 SDL2::SDL2main X11) -  target_include_directories( ll::SDL SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) -  target_link_libraries( ll::SDL INTERFACE SDL directfb fusion direct X11) +  use_prebuilt_binary(SDL2) +  target_link_libraries( ll::SDL INTERFACE SDL2 X11)  endif (LINUX) - - diff --git a/indra/cmake/Linker.cmake b/indra/cmake/Linker.cmake new file mode 100644 index 0000000000..8016842192 --- /dev/null +++ b/indra/cmake/Linker.cmake @@ -0,0 +1,11 @@ +include_guard(GLOBAL) + +if( LINK_WITH_MOLD ) +  find_program(MOLD_BIN mold) +  if(MOLD_BIN) +    message(STATUS "Mold linker found: ${MOLD_BIN}. Enabling mold as active linker.") +    add_link_options("-fuse-ld=${MOLD_BIN}") +  else() +    message(STATUS "Mold linker not found. Using default linker.") +  endif() +endif() diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake index 70b3a2c088..a1cf81be80 100644 --- a/indra/cmake/Meshoptimizer.cmake +++ b/indra/cmake/Meshoptimizer.cmake @@ -18,7 +18,7 @@ use_prebuilt_binary(meshoptimizer)  if (WINDOWS)    target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib)  elseif (LINUX) -  target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.o) +  target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)  elseif (DARWIN)    target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)  endif (WINDOWS) diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake index b88fbccf2a..db9c8b1780 100644 --- a/indra/cmake/NDOF.cmake +++ b/indra/cmake/NDOF.cmake @@ -19,6 +19,6 @@ if (NDOF)      target_link_libraries( ll::ndof INTERFACE ndofdev)    endif (WINDOWS)    target_compile_definitions( ll::ndof INTERFACE LIB_NDOF=1) +else() +  add_compile_options(-ULIB_NDOF)  endif (NDOF) - - diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index c0f1dfb44e..a3423bb895 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -1,42 +1,35 @@  # -*- cmake -*-  include(Prebuilt)  include(FreeType) +include(GLIB)  add_library( ll::uilibraries INTERFACE IMPORTED )  if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -  target_compile_definitions(ll::uilibraries INTERFACE LL_GTK=1 LL_X11=1 ) +  if (NOT USESYSTEMLIBS) +  use_prebuilt_binary(fltk) +  endif () +  target_compile_definitions(ll::uilibraries INTERFACE LL_FLTK=1 LL_X11=1 )    if( USE_CONAN ) -    target_link_libraries( ll::uilibraries INTERFACE CONAN_PKG::gtk ) -    return() -  elseif( NOT USE_AUTOBUILD_3P ) -    include(FindPkgConfig) -    pkg_check_modules(Gtk2 REQUIRED gtk+-2.0) -    target_include_directories( ll::uilibraries SYSTEM INTERFACE ${Gtk2_INCLUDE_DIRS} ) -    target_link_directories( ll::uilibraries INTERFACE ${Gtk2_LIBRARY_DIRS} ) -    target_link_libraries( ll::uilibraries INTERFACE ${Gtk2_LIBRARIES} )      return()    endif() -  use_prebuilt_binary(gtk-atk-pango-glib)    target_link_libraries( ll::uilibraries INTERFACE -          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 +          fltk +          Xrender +          Xcursor +          Xfixes +          Xext +          Xft            Xinerama +          ll::fontconfig            ll::freetype -          ) +          ll::SDL +          ll::glib +          ll::gio +  ) +  endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")  if( WINDOWS )    target_link_libraries( ll::uilibraries INTERFACE @@ -55,9 +48,8 @@ if( WINDOWS )            )  endif() -if (USE_AUTOBUILD_3P OR USE_CONAN) +if (NOT USESYSTEMLIBS)  target_include_directories( ll::uilibraries SYSTEM INTERFACE          ${LIBS_PREBUILT_DIR}/include          )  endif () - diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 59725ecc65..c037d657eb 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -117,7 +117,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")      set(FIND_LIBRARY_USE_LIB64_PATHS ON)    endif (ADDRESS_SIZE EQUAL 32) -  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH +  execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH         RESULT_VARIABLE DPKG_RESULT        OUTPUT_VARIABLE DPKG_ARCH        OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) @@ -127,8 +127,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")      set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/${DPKG_ARCH} /usr/local/lib/${DPKG_ARCH} ${CMAKE_SYSTEM_LIBRARY_PATH})    endif (DPKG_RESULT EQUAL 0) -  include(ConfigurePkgConfig) -    if (INSTALL_PROPRIETARY)      # Only turn on headless if we can find osmesa libraries.      include(FindPkgConfig) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 04a4c72d5f..7de21fd59b 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -7,14 +7,10 @@ if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))  endif ()  if (LINUX) -  #use_prebuilt_binary(libuuid)    add_library( ll::fontconfig INTERFACE IMPORTED ) -  if( NOT USE_CONAN ) -    use_prebuilt_binary(fontconfig) -  else() -    target_link_libraries( ll::fontconfig INTERFACE CONAN_PKG::fontconfig ) -  endif() +  find_package(Fontconfig REQUIRED) +  target_link_libraries( ll::fontconfig INTERFACE  Fontconfig::Fontconfig )  endif (LINUX)  if( NOT USE_CONAN ) | 
