diff options
author | Nicky <nicky.dasmijn@gmail.com> | 2022-04-18 18:11:43 +0200 |
---|---|---|
committer | Nicky <nicky.dasmijn@gmail.com> | 2022-04-18 18:11:43 +0200 |
commit | 2b151e0aefd54671e1be504269f10318d303dccb (patch) | |
tree | c1527ef5d23bc946ac8dfcb907d2678a9a96db79 /indra/cmake | |
parent | dcfb94fbaca3c66ec02e6873cda53b4afd547beb (diff) |
Round one to support conan for 3P packages, this allows to build the viewer on Linux again.
Diffstat (limited to 'indra/cmake')
28 files changed, 142 insertions, 87 deletions
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 1c635d4531..898979c47e 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -5,7 +5,9 @@ include_guard() add_library( ll::apr INTERFACE IMPORTED ) +use_conan_binary( apr apr-util ) use_prebuilt_binary(apr_suite) + if (WINDOWS) if (LLCOMMON_LINK_SHARED) set(APR_selector "lib") diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake index ddba066727..4b06de0a08 100644 --- a/indra/cmake/Audio.cmake +++ b/indra/cmake/Audio.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::vorbis INTERFACE IMPORTED ) +use_conan_binary(vorbis) use_prebuilt_binary(ogg_vorbis) target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index f4f824769e..601a23a86d 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -2,7 +2,13 @@ include(Prebuilt) include_guard() + add_library( ll::boost INTERFACE IMPORTED ) +if( USE_CONAN ) + target_link_libraries( ll::boost INTERFACE CONAN_PKG::boost ) + target_compile_definitions( ll::boost INTERFACE BOOST_ALLOW_DEPRECATED_HEADERS BOOST_BIND_GLOBAL_PLACEHOLDERS ) + return() +endif() use_prebuilt_binary(boost) diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake index e8b04177c1..7c93819e75 100644 --- a/indra/cmake/CURL.cmake +++ b/indra/cmake/CURL.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::libcurl INTERFACE IMPORTED ) +use_conan_binary(libcurl) use_prebuilt_binary(curl) if (WINDOWS) target_link_libraries(ll::libcurl INTERFACE libcurl.lib) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 1a0f6868fb..f6e224665b 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -216,22 +216,28 @@ elseif(LINUX) set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") # *FIX - figure out what to do with duplicate libalut.so here -brad set(release_files - libapr-1.so.0 - libaprutil-1.so.0 - libatk-1.0.so - ${EXPAT_COPY} - libfreetype.so.6.6.2 - libfreetype.so.6 - libGLOD.so - libgmodule-2.0.so - libgobject-2.0.so - libhunspell-1.3.so.0.0.0 - libuuid.so.16 - libuuid.so.16.0.22 - libfontconfig.so.1.8.0 - libfontconfig.so.1 - ) + ${EXPAT_COPY} + ) + if( NOT USE_CONAN ) + list( APPEND release_files + libapr-1.so.0 + libaprutil-1.so.0 + libatk-1.0.so + libfreetype.so.6.6.2 + libfreetype.so.6 + libGLOD.so + libhunspell-1.3.so.0.0.0 + 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() + + if (TARGET ll::fmodstudio) set(debug_files ${debug_files} "libfmodL.so") set(release_files ${release_files} "libfmod.so") diff --git a/indra/cmake/DBusGlib.cmake b/indra/cmake/DBusGlib.cmake index 7c95bf8c20..ce5d10be5c 100644 --- a/indra/cmake/DBusGlib.cmake +++ b/indra/cmake/DBusGlib.cmake @@ -1,22 +1,13 @@ # -*- cmake -*- include(Prebuilt) -use_prebuilt_binary(dbus_glib) -set(DBUSGLIB_FOUND ON FORCE BOOL) -set(DBUSGLIB_INCLUDE_DIRS - ${LIBS_PREBUILT_DIR}/include/dbus - ) -# We don't need to explicitly link against dbus-glib itself, because -# the viewer probes for the system's copy at runtime. -set(DBUSGLIB_LIBRARIES - gobject-2.0 - glib-2.0 - ) +add_library( ll::dbus INTERFACE IMPORTED) + +# Only define this when using conan, lls prebuild is brokenb +if( USE_CONAN ) + target_compile_definitions( ll::dbus INTERFACE LL_DBUS_ENABLED ) +endif() +use_conan_binary(dbus) -if (DBUSGLIB_FOUND) - set(DBUSGLIB ON CACHE BOOL "Build with dbus-glib message bus support.") -endif (DBUSGLIB_FOUND) +use_prebuilt_binary(dbus_glib) -if (DBUSGLIB) - add_definitions(-DLL_DBUS_ENABLED=1) -endif (DBUSGLIB) diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake index 8a48908401..e5c9dd5582 100644 --- a/indra/cmake/EXPAT.cmake +++ b/indra/cmake/EXPAT.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::expat INTERFACE IMPORTED ) +use_conan_binary(expat) use_prebuilt_binary(expat) if (WINDOWS) target_link_libraries( ll::expat INTERFACE libexpatMT ) diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index 1974e2879e..92130402f9 100644 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::freetype INTERFACE IMPORTED ) +use_conan_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 ) diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake index f6c39fe137..70477cf0af 100644 --- a/indra/cmake/GLEXT.cmake +++ b/indra/cmake/GLEXT.cmake @@ -1,8 +1,11 @@ # -*- cmake -*- include(Prebuilt) +include(GLH) +add_library( ll::glext INTERFACE IMPORTED ) if (WINDOWS OR LINUX) + use_conan_binary(glext) use_prebuilt_binary(glext) endif (WINDOWS OR LINUX) -use_prebuilt_binary(glh_linear) + diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake index b420ad413f..18521b5069 100644 --- a/indra/cmake/GLH.cmake +++ b/indra/cmake/GLH.cmake @@ -1,4 +1,7 @@ # -*- cmake -*- include(Prebuilt) +add_library( ll::glh_linear INTERFACE IMPORTED ) + +use_conan_binary( glh_linear ) use_prebuilt_binary(glh_linear) diff --git a/indra/cmake/GLOD.cmake b/indra/cmake/GLOD.cmake index db00a309f0..61c0c166d4 100644 --- a/indra/cmake/GLOD.cmake +++ b/indra/cmake/GLOD.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::glod INTERFACE IMPORTED ) +use_conan_binary(glod) use_prebuilt_binary(glod) target_include_directories( ll::glod SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/GStreamer010Plugin.cmake b/indra/cmake/GStreamer010Plugin.cmake index 848d4f7fc6..0b6a7a21c3 100644 --- a/indra/cmake/GStreamer010Plugin.cmake +++ b/indra/cmake/GStreamer010Plugin.cmake @@ -1,32 +1,12 @@ # -*- cmake -*- include(Prebuilt) -if (LINUX) - use_prebuilt_binary(gstreamer) - # possible libxml2 should have its own .cmake file instead - use_prebuilt_binary(libxml2) - set(GSTREAMER010_FOUND ON FORCE BOOL) - set(GSTREAMER010_PLUGINS_BASE_FOUND ON FORCE BOOL) - set(GSTREAMER010_INCLUDE_DIRS - ${LIBS_PREBUILT_DIR}/include/gstreamer-0.10 - ${LIBS_PREBUILT_DIR}/include/glib-2.0 - ${LIBS_PREBUILT_DIR}/include/libxml2 - ) - # We don't need to explicitly link against gstreamer itself, because - # LLMediaImplGStreamer probes for the system's copy at runtime. - set(GSTREAMER010_LIBRARIES - gobject-2.0 - gmodule-2.0 - dl - gthread-2.0 - glib-2.0 - ) -endif () +if (NOT LINUX) + return() +endif() -if (GSTREAMER010_FOUND AND GSTREAMER010_PLUGINS_BASE_FOUND) - set(GSTREAMER010 ON CACHE BOOL "Build with GStreamer-0.10 streaming media support.") -endif (GSTREAMER010_FOUND AND GSTREAMER010_PLUGINS_BASE_FOUND) +add_library( ll::gstreamer INTERFACE IMPORTED ) +target_compile_definitions( ll::gstreamer INTERFACE LL_GSTREAMER010_ENABLED=1) +use_conan_binary(gstreamer) -if (GSTREAMER010) - add_definitions(-DLL_GSTREAMER010_ENABLED=1) -endif (GSTREAMER010) +use_prebuilt_binary(gstreamer) diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake index 2036e43dd0..753b972e95 100644 --- a/indra/cmake/GoogleMock.cmake +++ b/indra/cmake/GoogleMock.cmake @@ -4,9 +4,13 @@ include(Linking) include_guard() -use_prebuilt_binary(googlemock) +if(USE_CONAN) + return() +endif() add_library( ll::googlemock INTERFACE IMPORTED ) +use_prebuilt_binary(googlemock) + target_include_directories( ll::googlemock SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include ) diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake index 7786418226..c372d83f8d 100644 --- a/indra/cmake/Hunspell.cmake +++ b/indra/cmake/Hunspell.cmake @@ -3,7 +3,7 @@ include(Prebuilt) include_guard() add_library( ll::hunspell INTERFACE IMPORTED ) - +use_conan_binary(hunspell) use_prebuilt_binary(libhunspell) if (WINDOWS) target_link_libraries( ll::hunspell INTERFACE libhunspell) diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake index a6ef5d4ad9..900fc77c40 100644 --- a/indra/cmake/JPEG.cmake +++ b/indra/cmake/JPEG.cmake @@ -4,14 +4,15 @@ include(Prebuilt) include(Linking) include_guard() -add_library( ll::jpeglib INTERFACE IMPORTED ) +add_library( ll::libjpeg INTERFACE IMPORTED ) +use_conan_binary(libjpeg) use_prebuilt_binary(jpeglib) if (LINUX) - target_link_libraries( ll::jpeglib INTERFACE jpeg) + target_link_libraries( ll::libjpeg INTERFACE jpeg) elseif (DARWIN) - target_link_libraries( ll::jpeglib INTERFACE jpeg) + target_link_libraries( ll::libjpeg INTERFACE jpeg) elseif (WINDOWS) - target_link_libraries( ll::jpeglib INTERFACE jpeglib) + target_link_libraries( ll::libjpeg INTERFACE jpeglib) endif (LINUX) -target_include_directories( ll::jpeglib SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) +target_include_directories( ll::libjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake index e7f7c13134..f62b2bdd7a 100644 --- a/indra/cmake/JsonCpp.cmake +++ b/indra/cmake/JsonCpp.cmake @@ -4,6 +4,8 @@ include(Prebuilt) include_guard() add_library( ll::jsoncpp INTERFACE IMPORTED ) +use_conan_binary(jsoncpp) + use_prebuilt_binary(jsoncpp) if (WINDOWS) target_link_libraries( ll::jsoncpp INTERFACE json_libmd.lib ) diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake index e643243fca..3e5ff4963b 100644 --- a/indra/cmake/LLPrimitive.cmake +++ b/indra/cmake/LLPrimitive.cmake @@ -6,29 +6,39 @@ include(Boost) include_guard() +add_library( ll::pcre INTERFACE IMPORTED ) +add_library( ll::minizip-ng INTERFACE IMPORTED ) +add_library( ll::libxml INTERFACE IMPORTED ) +add_library( ll::colladadom INTERFACE IMPORTED ) + +# ND, needs fixup in collada conan pkg +if( USE_CONAN ) + target_include_directories( ll::colladadom SYSTEM INTERFACE + "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/" + "${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" ) +endif() + +use_conan_binary( colladadom ) + use_prebuilt_binary(colladadom) use_prebuilt_binary(minizip-ng) # needed for colladadom use_prebuilt_binary(pcre) use_prebuilt_binary(libxml2) -add_library( ll::pcre INTERFACE IMPORTED ) target_link_libraries( ll::pcre INTERFACE pcrecpp pcre ) -add_library( ll::minizip-ng INTERFACE IMPORTED ) if (WINDOWS) target_link_libraries( ll::minizip-ng INTERFACE libminizip ) else() target_link_libraries( ll::minizip-ng INTERFACE minizip ) endif() -add_library( ll::libxml INTERFACE IMPORTED ) if (WINDOWS) target_link_libraries( ll::libxml INTERFACE libxml2_a) else() target_link_libraries( ll::libxml INTERFACE xml2) endif() -add_library( ll::colladadom INTERFACE IMPORTED ) target_include_directories( ll::colladadom SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/collada ${LIBS_PREBUILT_DIR}/include/collada/1.4 @@ -39,4 +49,4 @@ elseif (DARWIN) target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng) elseif (LINUX) target_link_libraries(ll::colladadom INTERFACE collada14dom ll::libxml ll::minizip-ng) -endif()
\ No newline at end of file +endif() diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake index 777acb19a7..0136d56723 100644 --- a/indra/cmake/LLWindow.cmake +++ b/indra/cmake/LLWindow.cmake @@ -5,13 +5,18 @@ include(GLEXT) include(Prebuilt) include_guard() -add_library( ll::sdl INTERFACE IMPORTED ) +add_library( ll::SDL INTERFACE IMPORTED ) + if (LINUX) + #Must come first as use_conan_binary can exit this file early + target_compile_definitions( ll::SDL INTERFACE LL_SDL=1) + + use_conan_binary(SDL) use_prebuilt_binary(SDL) - target_include_directories( ll::sdl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) - target_link_libraries( ll::sdl INTERFACE SDL directfb fusion direct X11) - target_compile_definitions( ll::sdl INTERFACE LL_SDL=1) + + target_include_directories( ll::SDL SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) + target_link_libraries( ll::SDL INTERFACE SDL directfb fusion direct X11) endif (LINUX) diff --git a/indra/cmake/NGHTTP2.cmake b/indra/cmake/NGHTTP2.cmake index 2ac204bfcb..27f273674b 100644 --- a/indra/cmake/NGHTTP2.cmake +++ b/indra/cmake/NGHTTP2.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::nghttp2 INTERFACE IMPORTED ) +use_conan_binary(nghttp2) use_prebuilt_binary(nghttp2) if (WINDOWS) target_link_libraries( ll::nghttp2 INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/nghttp2.lib) diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake index 184fbb3c5f..b016c22a4e 100644 --- a/indra/cmake/OpenJPEG.cmake +++ b/indra/cmake/OpenJPEG.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::openjpeg INTERFACE IMPORTED ) +use_conan_binary(openjpeg) use_prebuilt_binary(openjpeg) target_link_libraries(ll::openjpeg INTERFACE openjpeg ) diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake index dfc6520362..0d3f3ad9b4 100644 --- a/indra/cmake/OpenSSL.cmake +++ b/indra/cmake/OpenSSL.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::openssl INTERFACE IMPORTED ) +use_conan_binary(openssl) use_prebuilt_binary(openssl) if (WINDOWS) target_link_libraries(ll::openssl INTERFACE libssl libcrypto) diff --git a/indra/cmake/PNG.cmake b/indra/cmake/PNG.cmake index 672f963ea1..8e870f631f 100644 --- a/indra/cmake/PNG.cmake +++ b/indra/cmake/PNG.cmake @@ -4,6 +4,7 @@ include(Prebuilt) include_guard() add_library( ll::libpng INTERFACE IMPORTED ) +use_conan_binary(libpng) use_prebuilt_binary(libpng) if (WINDOWS) target_link_libraries(ll::libpng INTERFACE libpng16) diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake index f0192ec45b..542b4462e4 100644 --- a/indra/cmake/Prebuilt.cmake +++ b/indra/cmake/Prebuilt.cmake @@ -57,3 +57,16 @@ macro (use_prebuilt_binary _binary) endif (NOT ${_binary}_installed EQUAL 0) endmacro (use_prebuilt_binary _binary) +#Sadly we need a macro here, otherwise the return() will not properly work +macro ( use_conan_binary package ) + if( USE_CONAN ) + target_link_libraries( ll::${package} INTERFACE CONAN_PKG::${package} ) + foreach( extra_pkg "${ARGN}" ) + if( extra_pkg ) + target_link_libraries( ll::${package} INTERFACE CONAN_PKG::${extra_pkg} ) + endif() + endforeach() + return() + endif() +endmacro() + diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index 6a2e6f22df..066975a3d0 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -2,13 +2,17 @@ include(Prebuilt) include(FreeType) -if (LINUX) - use_prebuilt_binary(gtk-atk-pango-glib) -endif (LINUX) - add_library( ll::uilibraries INTERFACE IMPORTED ) if (LINUX) + target_compile_definitions(ll::uilibraries INTERFACE LL_GTK=1 LL_X11=1 ) + + if( USE_CONAN ) + target_link_libraries( ll::uilibraries INTERFACE CONAN_PKG::gtk ) + return() + endif() + use_prebuilt_binary(gtk-atk-pango-glib) + target_link_libraries( ll::uilibraries INTERFACE atk-1.0 gdk-x11-2.0 @@ -67,6 +71,3 @@ target_include_directories( ll::uilibraries SYSTEM INTERFACE # ) #endforeach(include) -if (LINUX) - target_compile_definitions(ll::uilibraries INTERFACE LL_GTK=1 LL_X11=1 ) -endif (LINUX) diff --git a/indra/cmake/URIPARSER.cmake b/indra/cmake/URIPARSER.cmake index cc181f74f8..b1c76c006a 100644 --- a/indra/cmake/URIPARSER.cmake +++ b/indra/cmake/URIPARSER.cmake @@ -1,10 +1,13 @@ # -*- cmake -*- include_guard() -add_library( ll::uriparser INTERFACE IMPORTED ) include(Prebuilt) +add_library( ll::uriparser INTERFACE IMPORTED ) + +use_conan_binary( uriparser ) + use_prebuilt_binary(uriparser) if (WINDOWS) target_link_libraries( ll::uriparser INTERFACE uriparser) diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake index 7b5c990094..00f8b77106 100644 --- a/indra/cmake/ViewerMiscLibs.cmake +++ b/indra/cmake/ViewerMiscLibs.cmake @@ -2,10 +2,19 @@ include(Prebuilt) if (LINUX) - use_prebuilt_binary(libuuid) - use_prebuilt_binary(fontconfig) + #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() endif (LINUX) -use_prebuilt_binary(libhunspell) + +if( NOT USE_CONAN ) + use_prebuilt_binary(libhunspell) +endif() + use_prebuilt_binary(slvoice) diff --git a/indra/cmake/XmlRpcEpi.cmake b/indra/cmake/XmlRpcEpi.cmake index 83f06788f2..7cb0efdab7 100644 --- a/indra/cmake/XmlRpcEpi.cmake +++ b/indra/cmake/XmlRpcEpi.cmake @@ -4,6 +4,8 @@ include(Prebuilt) include_guard() add_library( ll::xmlrpc-epi INTERFACE IMPORTED ) +use_conan_binary( xmlrpc-epi ) + use_prebuilt_binary(xmlrpc-epi) target_link_libraries(ll::xmlrpc-epi INTERFACE xmlrpc-epi ) target_include_directories( ll::xmlrpc-epi SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/ZLIBNG.cmake b/indra/cmake/ZLIBNG.cmake index a1a1860bc6..5d99cd9709 100644 --- a/indra/cmake/ZLIBNG.cmake +++ b/indra/cmake/ZLIBNG.cmake @@ -5,6 +5,11 @@ include(Prebuilt) include_guard() add_library( ll::zlib-ng INTERFACE IMPORTED ) +if(USE_CONAN ) + target_link_libraries( ll::zlib-ng INTERFACE CONAN_PKG::zlib ) + return() +endif() + use_prebuilt_binary(zlib-ng) if (WINDOWS) target_link_libraries( ll::zlib-ng INTERFACE zlib ) |