1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
From ed4164eaeaec10833108b9ddea4597005addc2a1 Mon Sep 17 00:00:00 2001
From: Michael Orlitzky <michael@orlitzky.com>
Date: Mon, 7 Sep 2026 10:36:19 -0400
Subject: [PATCH] CMakeLists.txt: remove explicit static libraries
Currently both shared and static libraries are built via duplicate
calls to add_library, set_target_properties, target_link_libraries,
etc. Typically only one of these is desired, and CMake provides a
variable to control it:
https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
This commit removes the explicit static libraries, and then removes
the explicit "SHARED" from the remaining add_library(). The end result
is that one type of library is installed, and it is controlled by the
BUILD_SHARED_LIBS flag.
Gentoo-bug: https://bugs.gentoo.org/982096
---
CMakeLists.txt | 17 +++--------------
tools/blisp/CMakeLists.txt | 2 +-
2 files changed, 4 insertions(+), 15 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f7d84f3..8f4e39e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,6 +8,7 @@ set(CMAKE_C_STANDARD 11)
option(BLISP_BUILD_CLI "Build CLI Tool" OFF)
option(BLISP_USE_SYSTEM_LIBRARIES "Use system-installed libraries" "${CMAKE_USE_SYSTEM_LIBRARIES}")
option(COMPILE_TESTS "Compile the tests" OFF)
+option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
add_library(libblisp_obj OBJECT
lib/blisp.c
@@ -30,8 +31,7 @@ endif()
set_property(TARGET libblisp_obj PROPERTY POSITION_INDEPENDENT_CODE 1)
-add_library(libblisp SHARED $<TARGET_OBJECTS:libblisp_obj>)
-add_library(libblisp_static STATIC $<TARGET_OBJECTS:libblisp_obj>)
+add_library(libblisp $<TARGET_OBJECTS:libblisp_obj>)
set(BLISP_PUBLIC_HEADERS
include/blisp.h
@@ -44,20 +44,11 @@ set_target_properties(libblisp PROPERTIES
PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}"
VERSION 0.0.5
SOVERSION 1
- LIBRARY_OUTPUT_DIRECTORY "shared"
- OUTPUT_NAME "blisp")
-
-set_target_properties(libblisp_static PROPERTIES
- PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}"
- VERSION 0.0.5
- SOVERSION 1
- ARCHIVE_OUTPUT_DIRECTORY "static"
OUTPUT_NAME "blisp")
if(BLISP_USE_SYSTEM_LIBRARIES)
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")
@@ -70,7 +61,6 @@ else()
if(WIN32)
target_link_libraries(libblisp PRIVATE Setupapi.lib)
- target_link_libraries(libblisp_static PRIVATE Setupapi.lib)
target_compile_definitions(libblisp_obj PRIVATE LIBSERIALPORT_MSBUILD)
target_sources(libblisp_obj PRIVATE
${CMAKE_SOURCE_DIR}/vendor/libserialport/windows.c)
@@ -89,7 +79,6 @@ else()
elseif(UNIX AND ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
target_include_directories(libblisp_obj PRIVATE /usr/local/include/)
target_link_libraries(libblisp PRIVATE -L/usr/local/lib usb serialport)
- target_link_libraries(libblisp_static PRIVATE -L/usr/local/lib usb serialport)
elseif(APPLE)
target_sources(libblisp_obj PRIVATE
${CMAKE_SOURCE_DIR}/vendor/libserialport/macosx.c)
@@ -104,7 +93,7 @@ else()
endif()
include(GNUInstallDirs)
-install(TARGETS libblisp libblisp_static
+install(TARGETS libblisp
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
diff --git a/tools/blisp/CMakeLists.txt b/tools/blisp/CMakeLists.txt
index 3af2488..f6a9a17 100644
--- a/tools/blisp/CMakeLists.txt
+++ b/tools/blisp/CMakeLists.txt
@@ -21,7 +21,7 @@ target_include_directories(blisp PRIVATE
target_link_libraries(blisp PRIVATE
argtable3::argtable3
- libblisp_static file_parsers)
+ libblisp file_parsers)
if (NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
target_compile_options(libblisp_obj PRIVATE -Wall -Wextra -Wpedantic)
--
2.55.0
|