Skip to content

Commit c367a48

Browse files
committed
improved cmake
1 parent 7ff7717 commit c367a48

File tree

1 file changed

+31
-37
lines changed

1 file changed

+31
-37
lines changed

CMakeLists.txt

+31-37
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@
22
# Copyright (C) 2019-2023 Intel Corporation
33
cmake_minimum_required(VERSION 3.5)
44
include(version.cmake)
5-
project(safestring
6-
VERSION ${SAFEC_VERSION_STRING}
7-
DESCRIPTION "Safe C string library"
8-
)
95

10-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
11-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
12-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
13-
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
6+
project(safestring VERSION ${SAFEC_VERSION_STRING}
7+
LANGUAGES C
8+
DESCRIPTION "Safe C string library")
149

15-
option(BUILD_UNITTESTS "Build also project unit-tests" OFF)
10+
#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
11+
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
12+
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
1613

14+
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
15+
option(BUILD_UNITTESTS "Build also project unit-tests" OFF)
1716
if(NOT DEFINED BUILD_OPT_DEFAULT)
1817
option(BUILD_OPT_DEFAULT "Build option default" ON)
1918
endif()
@@ -156,14 +155,10 @@ set(HEADER_FILES include/safe_lib_errno.h
156155
include/snprintf_s.h)
157156

158157
include_directories(include)
159-
160-
# conains all the objects individual files *.o
161158
add_library(${PROJECT_NAME}_objlib OBJECT ${SOURCES})
162159
set_target_properties(${PROJECT_NAME}_objlib
163160
PROPERTIES POSITION_INDEPENDENT_CODE ON)
164-
165161
target_compile_definitions(${PROJECT_NAME}_objlib PRIVATE -DSTDC_HEADERS)
166-
167162
target_compile_options(${PROJECT_NAME}_objlib
168163
PRIVATE -Wno-unknown-pragmas -Wno-unused-parameter)
169164
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 7)
@@ -188,7 +183,6 @@ if(CMAKE_COMPILER_IS_GNUCC AND
188183
target_compile_options(${PROJECT_NAME}_objlib PRIVATE -mmitigate-rop)
189184
endif()
190185
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now")
191-
192186
option(BUILD_ERROR_ON_WARNING "Fail compilation on warning" OFF)
193187

194188
if(BUILD_ERROR_ON_WARNING)
@@ -197,30 +191,30 @@ endif()
197191

198192
target_compile_options(${PROJECT_NAME}_objlib PRIVATE $<$<CONFIG:RELEASE>:-s>)
199193

200-
# from HEAD
201-
#add_library(${PROJECT_NAME}_shared SHARED $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
202-
#add_library(${PROJECT_NAME}_static STATIC $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
194+
add_library(${PROJECT_NAME}_shared SHARED $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
195+
set_target_properties(${PROJECT_NAME}_shared PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
196+
set_target_properties(${PROJECT_NAME}_shared PROPERTIES VERSION ${SAFEC_VERSION_STRING} SOVERSION 1)
197+
add_library(${PROJECT_NAME}_static STATIC $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
198+
set_target_properties(${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
199+
200+
#add_library(${PROJECT_NAME} SHARED $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
201+
#add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
202+
#add_library(${PROJECT_NAME} ${SOURCES})
203203

204-
#target_include_directories(${PROJECT_NAME}_shared PUBLIC
204+
#target_include_directories(${PROJECT_NAME} PUBLIC
205205
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
206206
# $<INSTALL_INTERFACE:include>
207207
#)
208208
#target_include_directories(${PROJECT_NAME}_static PUBLIC include)
209-
#=======
210-
#add_library(${PROJECT_NAME} SHARED $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
211-
#add_library(${PROJECT_NAME} STATIC $<TARGET_OBJECTS:${PROJECT_NAME}_objlib>)
212-
add_library(${PROJECT_NAME} ${SOURCES})
213-
#set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER ${HEADER_FILES})
214209
#target_include_directories(${PROJECT_NAME}_shared PUBLIC include)
215210
#target_include_directories(${PROJECT_NAME}_static PUBLIC include)
216211
#target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
217-
target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include)
218-
install(TARGETS ${PROJECT_NAME}
219-
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
220-
install(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME})
221-
222-
set_target_properties(${PROJECT_NAME}_shared PROPERTIES VERSION ${SAFEC_VERSION_STRING})
223-
set_target_properties(${PROJECT_NAME}_static PROPERTIES VERSION ${SAFEC_VERSION_STRING})
212+
#target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include)
213+
#target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include)
214+
#set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER ${HEADER_FILES})
215+
#set_target_properties(${PROJECT_NAME}_shared PROPERTIES VERSION ${SAFEC_VERSION_STRING})
216+
#set_target_properties(${PROJECT_NAME}_static PROPERTIES VERSION ${SAFEC_VERSION_STRING})
217+
#set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${SAFEC_VERSION_STRING})
224218

225219
if(BUILD_UNITTESTS)
226220
add_subdirectory(unittests)
@@ -235,18 +229,18 @@ set(PUBLIC_HEADERS
235229
include/safe_types.h
236230
include/snprintf_s.h
237231
)
232+
#set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")
238233

239-
set_target_properties(${PROJECT_NAME}_shared PROPERTIES
240-
PUBLIC_HEADER "${PUBLIC_HEADERS}"
241-
)
242-
243-
install(TARGETS ${PROJECT_NAME}_shared EXPORT ${PROJECT_NAME}Config
234+
#install(TARGETS ${PROJECT_NAME}
235+
# LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
236+
#install(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME})
237+
install(TARGETS ${PROJECT_NAME}_shared ${PROJECT_NAME}_static
244238
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
239+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
245240
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
246241
)
247242

248-
install(EXPORT ${PROJECT_NAME}Config DESTINATION share/${PROJECT_NAME}/cmake)
249-
243+
#install(EXPORT ${PROJECT_NAME}Config DESTINATION share/${PROJECT_NAME}/cmake)
250244
export(TARGETS ${PROJECT_NAME}_shared FILE ${PROJECT_NAME}Config.cmake)
251245

252246
# Debian package information for CPack

0 commit comments

Comments
 (0)