diff --git a/CMakeLists.txt b/CMakeLists.txt index d9da57f..4fe0ea2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.16) -set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +# set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) project(blisp C) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_C_STANDARD 11) @@ -42,11 +43,10 @@ set_target_properties(libblisp_static PROPERTIES OUTPUT_NAME "blisp") if(BLISP_USE_SYSTEM_LIBRARIES) - find_package(PkgConfig) - pkg_search_module(LIBSERIALPORT REQUIRED libserialport) - target_link_libraries(libblisp PUBLIC ${LIBSERIALPORT_LIBRARIES}) - target_link_libraries(libblisp_static PUBLIC ${LIBSERIALPORT_LIBRARIES}) - target_include_directories(libblisp_obj PUBLIC ${LIBSERIALPORT_INCLUDE_DIRS}) + find_package(Libserialport REQUIRED) + target_link_libraries(libblisp PUBLIC Libserialport::Libserialport) + target_link_libraries(libblisp_static PUBLIC Libserialport::Libserialport) + target_include_directories(libblisp_obj PUBLIC ${Libserialport_INCLUDE_DIRS}) else() if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") target_sources(libblisp_obj PRIVATE diff --git a/cmake/FindLibserialport.cmake b/cmake/FindLibserialport.cmake new file mode 100644 index 0000000..827a010 --- /dev/null +++ b/cmake/FindLibserialport.cmake @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: MIT + +#[=======================================================================[.rst: +FindLibserialport +------- + +Finds the sigrok serial port library (``libserialport``) + +Imported Targets +^^^^^^^^^^^^^^^^ + +This module defines the following imported targets, if found: + +``Libserialport::Libserialport`` + The serialport library + +Result Variables +^^^^^^^^^^^^^^^^ + +This module will define the following variables: + +``Libserialport_FOUND`` + True if the system has the serialport library. +``Libserialport_VERSION`` + The version of the serialport library which was found. +``Libserialport_INCLUDE_DIRS`` + Include directories needed to use ``libserialport``. +``Libserialport_LIBRARIES`` + Libraries needed to link to ``libserialport``. + +Cache Variables +^^^^^^^^^^^^^^^ + +The following cache variables may also be set: + +``Libserialport_INCLUDE_DIR`` + The directory containing ``libserialport.h``. +``Libserialport_LIBRARY`` + The path to the ``libserialport`` library. + +#]=======================================================================] + +find_package(PkgConfig) +pkg_check_modules(PC_Libserialport QUIET libserialport) + +find_path(Libserialport_INCLUDE_DIR + NAMES libserialport.h + PATHS "${PC_Libserialport_INCLUDE_DIRS}" +) +find_library(Libserialport_LIBRARY + NAMES serialport + HINTS "${PC_Libserialport_LIBRARY_DIRS}" +) + +set(Foo_VERSION ${PC_Foo_VERSION}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Libserialport + FOUND_VAR Libserialport_FOUND + REQUIRED_VARS + Libserialport_LIBRARY + Libserialport_INCLUDE_DIR + VERSION_VAR Libserialport_VERSION +) + +if(Libserialport_FOUND) + set(Libserialport_LIBRARIES ${Libserialport_LIBRARY}) + set(Libserialport_INCLUDE_DIRS ${Libserialport_INCLUDE_DIR}) + set(Libserialport_DEFINITIONS ${PC_Liberialport_CFLAGS_OTHER}) +endif() + +if(Libserialport_FOUND AND NOT TARGET Libserialport::Libserialport) + add_library(Libserialport::Libserialport UNKNOWN IMPORTED) + set_target_properties(Libserialport::Libserialport PROPERTIES + IMPORTED_LOCATION "${Libserialport_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${PC_Libserialport_CFLAGS_OTHER}" + INTERFACE_INCLUDE_DIRECTORIES "${Libserialport_INCLUDE_DIR}" + ) +endif() diff --git a/tools/blisp/CMakeLists.txt b/tools/blisp/CMakeLists.txt index b271dc4..66cbb40 100644 --- a/tools/blisp/CMakeLists.txt +++ b/tools/blisp/CMakeLists.txt @@ -20,7 +20,7 @@ target_include_directories(blisp PRIVATE "${CMAKE_SOURCE_DIR}/include") target_link_libraries(blisp PRIVATE - argtable3 + argtable3::argtable3 libblisp_static file_parsers) if (WIN32)