From a02804483534bfd83a619b57a38bb327c91fedd6 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Fri, 21 May 2021 18:15:17 +0200 Subject: [PATCH] cmake: do not strictly require liblo and jack --- cmake/DPF-plugin.cmake | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/cmake/DPF-plugin.cmake b/cmake/DPF-plugin.cmake index 3a93dec2..2ca933e4 100644 --- a/cmake/DPF-plugin.cmake +++ b/cmake/DPF-plugin.cmake @@ -122,6 +122,14 @@ endfunction() # Add build rules for a JACK program. # function(dpf__build_jack NAME DGL_LIBRARY) + find_package(PkgConfig) + pkg_check_modules(JACK "jack") + if(NOT JACK_FOUND) + dpf__warn_once_only(missing_jack + "JACK is not found, skipping the `jack` plugin targets") + return() + endif() + dpf__add_executable("${NAME}-jack") dpf__add_plugin_main("${NAME}-jack" "jack") dpf__add_ui_main("${NAME}-jack" "jack" "${DGL_LIBRARY}") @@ -130,9 +138,6 @@ function(dpf__build_jack NAME DGL_LIBRARY) RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/$<0:>" OUTPUT_NAME "${NAME}") - find_package(PkgConfig) - pkg_check_modules(JACK "jack" REQUIRED) - target_include_directories("${NAME}-jack" PRIVATE ${JACK_INCLUDE_DIRS}) target_link_libraries("${NAME}-jack" PRIVATE ${JACK_LIBRARIES}) link_directories(${JACK_LIBRARY_DIRS}) @@ -159,7 +164,14 @@ endfunction() # Add build rules for a DSSI plugin. # function(dpf__build_dssi NAME DGL_LIBRARY) - # -- build for DSSI + find_package(PkgConfig) + pkg_check_modules(LIBLO "liblo") + if(NOT LIBLO_FOUND) + dpf__warn_once_only(missing_liblo + "liblo is not found, skipping the `dssi` plugin targets") + return() + endif() + dpf__add_module("${NAME}-dssi") dpf__add_plugin_main("${NAME}-dssi" "dssi") target_link_libraries("${NAME}-dssi" PRIVATE "${NAME}-dsp") @@ -176,9 +188,6 @@ function(dpf__build_dssi NAME DGL_LIBRARY) RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/${NAME}-dssi/$<0:>" OUTPUT_NAME "${NAME}_ui") - find_package(PkgConfig) - pkg_check_modules(LIBLO "liblo" REQUIRED) - target_include_directories("${NAME}-dssi-ui" PRIVATE ${LIBLO_INCLUDE_DIRS}) target_link_libraries("${NAME}-dssi-ui" PRIVATE ${LIBLO_LIBRARIES}) link_directories(${LIBLO_LIBRARY_DIRS}) @@ -469,3 +478,16 @@ function(dpf__ensure_sources_non_empty VAR) endif() set("${VAR}" "${_file}" PARENT_SCOPE) endfunction() + +# dpf__warn_once +# ------------------------------------------------------------------------------ +# +# Prints a warning message once only. +# +function(dpf__warn_once_only TOKEN MESSAGE) + get_property(_warned GLOBAL PROPERTY "dpf__have_warned_${TOKEN}") + if(NOT _warned) + set_property(GLOBAL PROPERTY "dpf__have_warned_${TOKEN}" TRUE) + message(WARNING "${MESSAGE}") + endif() +endfunction()