Compare commits

..

4 Commits

Author SHA1 Message Date
Ben V. Brown
bfe472e71c
Merge pull request #65 from JetbladeDevsStuff/fix-build-macos
Fix lots of build problems on macOS
2024-12-12 13:05:16 +11:00
Terence Noone
2268e535d4 Fix linking with argtable3
CMake interpreted `argtable3` to mean add `-largtable3` rather than to
use the imported argtable3 target. This worked when using the bundled
library, but broke with native libraries.
2024-12-11 20:54:11 -05:00
Terence Noone
cb32800728 Do not build for both arm64 and x86_84 on macOS.
While this might work when using bundled libraries, this breaks with
system libraries as they are all compiled for arm64. Also, why would you
need to compile an x86_64 version on arm64, and vise versa.
2024-12-11 20:54:11 -05:00
Terence Noone
da463d79fd Use new find module for libserialport
This new find module will replace the old logic used to locate a native
copy of libserialport. THe old code didn't work on macOS, and was pretty
messy.
2024-12-11 20:54:11 -05:00
3 changed files with 86 additions and 7 deletions

View File

@ -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

View File

@ -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()

View File

@ -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)