From d0d3f2d1694d38fbb356178f2a8cee378b747854 Mon Sep 17 00:00:00 2001 From: Wolfgang Frisch Date: Thu, 15 Feb 2024 10:23:03 +0100 Subject: [PATCH] cmake: fix semicolons in CFLAGS of custom modules Both `openssl.cmake` and `pcscd.cmake` use FindPkgConfig to retrieve the required CFLAGS and LDFLAGS. However FindPkgConfig returns lists, which are stored as semicolon-separated strings in CMake. This breaks the build when there's more than one flag in any of those variables. Fixes https://github.com/Yubico/yubico-piv-tool/issues/474 --- CMakeLists.txt | 2 +- cmake/openssl.cmake | 5 +++-- cmake/pcscd.cmake | 7 ++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae6654e6..1bc068a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ # (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_minimum_required (VERSION 3.5) +cmake_minimum_required (VERSION 3.12) # policy CMP0025 is to get AppleClang identifier rather than Clang for both # this matters since the apple compiler accepts different flags. cmake_policy(SET CMP0025 NEW) diff --git a/cmake/openssl.cmake b/cmake/openssl.cmake index e650d819..ec29ee30 100644 --- a/cmake/openssl.cmake +++ b/cmake/openssl.cmake @@ -84,8 +84,9 @@ macro (find_libcrypto) endif(WIN32 OR OPENSSL_STATIC_LINK) message(" OpenSSL version: ${OPENSSL_VERSION}") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBCRYPTO_CFLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCRYPTO_CFLAGS}") + list(JOIN LIBCRYPTO_CFLAGS " " LIBCRYPTO_CFLAGS_STRING) + set(CMAKE_C_FLAGS "${LIBCRYPTO_CFLAGS_STRING} ${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${LIBCRYPTO_CFLAGS_STRING} ${CMAKE_CXX_FLAGS}") link_directories(${LIBCRYPTO_LIBRARY_DIRS}) include_directories(${LIBCRYPTO_INCLUDE_DIRS}) diff --git a/cmake/pcscd.cmake b/cmake/pcscd.cmake index 42226938..5fe0ad94 100644 --- a/cmake/pcscd.cmake +++ b/cmake/pcscd.cmake @@ -75,7 +75,7 @@ macro (find_pcscd) set(ENV{PKG_CONFIG_PATH} "${PCSCLITE_PKG_PATH}:$ENV{PKG_CONFIG_PATH}") pkg_check_modules(PCSC REQUIRED libpcsclite) if(PCSC_FOUND) - set(PCSC_LIBRARIES ${PCSC_LDFLAGS}) + list(JOIN PCSC_LDFLAGS " " PCSC_LIBRARIES) if(VERBOSE_CMAKE) message("PCSC_FOUND: ${PCSC_FOUND}") message("PCSC_LIBRARY_DIRS: ${PCSC_LIBRARY_DIRS}") @@ -100,8 +100,9 @@ macro (find_pcscd) else(${PCSC_DIR} NOT STREQUAL "") set(PCSC_CUSTOM_LIBS "-Wl,-l${PCSC_LIB}") endif(${PCSC_DIR} NOT STREQUAL "") - set(CMAKE_C_FLAGS ${PCSC_CFLAGS} ${CMAKE_C_FLAGS}) - set(PCSC_LIBRARIES ${PCSC_LIBRARIES} ${PCSC_CUSTOM_LIBS}) + list(JOIN PCSC_CFLAGS " " PCSC_CFLAGS_STRING) + set(CMAKE_C_FLAGS "${PCSC_CFLAGS_STRING} ${CMAKE_C_FLAGS}") + set(PCSC_LIBRARIES "${PCSC_LIBRARIES} ${PCSC_CUSTOM_LIBS}") unset(PCSC_MACOSX_LIBS) unset(PCSC_WIN_LIBS) unset(PCSC_LIBS)