toys/serialport/CMakeLists.txt

64 lines
1.7 KiB
CMake

cmake_minimum_required (VERSION 3.15)
project (serialport)
set (ADMAKE_DISABLE_ADDRESS_SANITIZER ON)
include (CMakeListsPub)
set (TARGET_NAME ${CMAKE_PROJECT_NAME})
file (GLOB_RECURSE SRC
"${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp")
add_library (${TARGET_NAME}_OBJ OBJECT ${SRC})
if (APPLE)
elseif (ANDROID)
add_compile_options (-ffunction-sections -fdata-sections -fvisibility=hidden -Wl,--gc-sections)
elseif (UNIX)
elseif (WIN32)
# Disable the lib export by DLL
set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS OFF)
endif ()
target_include_directories (${TARGET_NAME}_OBJ
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/include"
"${CMAKE_CURRENT_SOURCE_DIR}/source")
add_library (${TARGET_NAME} STATIC $<TARGET_OBJECTS:${TARGET_NAME}_OBJ>)
add_library (${TARGET_NAME}_SO SHARED $<TARGET_OBJECTS:${TARGET_NAME}_OBJ>)
if (WIN32)
set_target_properties (${TARGET_NAME}_SO PROPERTIES
OUTPUT_NAME "serialportdll")
target_link_libraries (${TARGET_NAME}_SO PUBLIC user32)
elseif (APPLE)
set (DEP_FRAMEWOKS Foundation)
macro (add_osx_framework target fwname)
find_library (FRAMEWORK_${fwname}
NAMES ${fwname}
PATHS ${CMAKE_OSX_SYSROOT}/System/Library
PATH_SUFFIXES Frameworks
NO_DEFAULT_PATH)
if (${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)
message (ERROR ": Framework ${fwname} not found")
else ()
message (STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
target_link_libraries (${target} "-framework ${fwname}")
endif ()
endmacro ()
foreach (framework ${DEP_FRAMEWOKS})
add_osx_framework (${TARGET_NAME}_SO ${framework})
endforeach ()
endif ()
if (DEFINED ADMAKE_BUILD_TEST)
endif ()