Forwarded here: https://lists.gnu.org/archive/html/jami/2024-01/msg00007.html From a302dc0a0faf2778331745a1d01bc3071e182d4d Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 8 Jan 2024 16:07:05 -0500 Subject: [PATCH] build: Allow using system-provided md4c and tidy libraries. * CMakeLists.txt : Search for libraries in the system first, falling back to bundled copies in case they aren't found. Series-to: jami@gnu.org Fixes: Change-Id: I637959fefce6a21b0ee73a793acb6c3c42dcdce0 --- CMakeLists.txt | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e802357f..6d2dccfb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -600,20 +600,34 @@ add_subdirectory(3rdparty/SortFilterProxyModel) set(SFPM_OBJECTS $) # md4c -set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE) -set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE) -add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL) -list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src) -list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src) -list(APPEND CLIENT_LIBS md4c-html) +find_package(md4c) +if(md4c_FOUND) + message(STATUS "Using system-provided md4c-html") + list(APPEND CLIENT_LIBS md4c::md4c-html) +else() + message("Using bundled md4c-html library") + set(BUILD_MD2HTML_EXECUTABLE OFF CACHE BOOL "Don't build md2html executable" FORCE) + set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE) + add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL) + list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src) + list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src) + list(APPEND CLIENT_LIBS md4c-html) +endif() # tidy-html5 -set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE) -set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE) -add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL) -list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release) -list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include) -list(APPEND CLIENT_LIBS tidy-static) +pkg_check_modules(tidy IMPORTED_TARGET tidy) +if(tidy_FOUND) + message(STATUS "Using system-provided tidy") + list(APPEND CLIENT_LIBS PkgConfig::tidy) +else() + message("Using bundled tidy library") + set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE) + set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE) + add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL) + list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release) + list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include) + list(APPEND CLIENT_LIBS tidy-static) +endif() # common executable sources qt_add_executable( base-commit: a4300308dc8d03d59f620bb5fed753df5cf31ed9 -- 2.41.0 arguments]<#:configure-flags>: Add "-DDOCUMENTATION". <#:phases>: Add "install-documentation" phase. [native-inputs]: Add doxygen, graphviz. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Update to 1.5....* gnu/packages/patches/libftdi-fix-paths-when-FTDIPP-set.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/libftdi.scm (libftdi): Update to 1.5. [source]: Apply patch. [arguments]<#:configure-flags>: Add "-DFTDIPP", "-DPYTHON_BINDINGS". Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Build Python bindings....* gnu/packages/libftdi.scm (libftdi)[outputs]: Add "python". [arguments]<#:phases>: Add with "install-python-binding" phase. [native-inputs]: Add python, swig. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Build C++ bindings....Enabling the C++ bindings allows the test suite to be run, although this fails without access to the host's USB interface. * gnu/packages/libftdi.scm (libftdi)[arguments]: Add #:test-target, #:tests?. (inputs): Add boost. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Build ftdi_eeprom....* gnu/packages/libftdi.scm (libftdi)[arguments]<#:configure-flags>: Add "-DCMAKE_INSTALL_DOCDIR". [native-inputs]: Add with pkg-config. [inputs]: Add with libconfuse. [license]: Add GPL version 2. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Install libraries to /lib instead of /lib64....* gnu/packages/libftdi.scm (libftdi)[arguments]<#:configure-flags>: Add "-DLIB_SUFFIX". Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Do not build example programs....* gnu/packages/libftdi.scm (libftdi)[arguments]: Add with "-DEXAMPLES" configure flag. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Use HTTPS for package source....* gnu/packages/libftdi.scm (libftdi)[source]: Use HTTPS. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South 2023-09-14gnu: libftdi: Update package style....* gnu/packages/libftdi.scm: Re-order #:use-module statements. (libftdi): Wrap long lines; reformat gently. [license]: Use "license:" prefix. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Simon South