From 9e6b0fa25e948e526a8efcc61e668fd7a7a7550f Mon Sep 17 00:00:00 2001 From: Kemin Zhou Date: Sun, 12 Jul 2020 17:06:24 -0700 Subject: [PATCH 1/3] update cmake add install --- CMakeLists.txt | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 213d5a8..e52e6a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,10 @@ cmake_minimum_required(VERSION 3.1) -project(safestring) +project(safestring VERSION 1.0) + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) option(BUILD_UNITTESTS "Build also project unit-tests" OFF) @@ -137,8 +142,16 @@ set(SOURCES $<$:safeclib/wmemset_s.c> ) +set(HEADER_FILES include/safe_lib_errno.h + include/safe_lib.h + include/safe_str_lib.h + include/safe_mem_lib.h + include/safe_types.h + include/snprintf_s.h) + include_directories(include) +# conains all the objects individual files *.o add_library(${PROJECT_NAME}_objlib OBJECT ${SOURCES}) set_target_properties(${PROJECT_NAME}_objlib PROPERTIES POSITION_INDEPENDENT_CODE ON) @@ -176,10 +189,17 @@ endif() target_compile_options(${PROJECT_NAME}_objlib PRIVATE $<$:-s>) -add_library(${PROJECT_NAME}_shared SHARED $) -add_library(${PROJECT_NAME}_static STATIC $) -target_include_directories(${PROJECT_NAME}_shared PUBLIC include) -target_include_directories(${PROJECT_NAME}_static PUBLIC include) +#add_library(${PROJECT_NAME} SHARED $) +#add_library(${PROJECT_NAME} STATIC $) +add_library(${PROJECT_NAME} ${SOURCES}) +#set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER ${HEADER_FILES}) +#target_include_directories(${PROJECT_NAME}_shared PUBLIC include) +#target_include_directories(${PROJECT_NAME}_static PUBLIC include) +#target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) +target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) +install(TARGETS ${PROJECT_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) +install(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}) if(BUILD_UNITTESTS) add_subdirectory(unittests) From 24d52ab94fd81c12ae28afbefc53c220659c53a8 Mon Sep 17 00:00:00 2001 From: Kemin Zhou Date: Sun, 12 Jul 2020 17:08:34 -0700 Subject: [PATCH 2/3] update REAME --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 0b31e1c..cfa006b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,9 @@ # safestringlib +Simply update the cmake file so that we can make install to a +particular prefix. My main use of this library is for BWA-MEM2. +After update, BWM-MEM2 build would be more smooth. + + The Secure Development Lifecycle (SDL) recommends banning certain C Library functions because they directly contribute to security vulnerabilities such as buffer overflows. However routines for the manipulation of strings and memory buffers are common in software and firmware, and are essential to accomplish certain programming tasks. Safer replacements for From c367a482dc1090ee4df02227a7ac94b688260d84 Mon Sep 17 00:00:00 2001 From: Kemin Zhou Date: Sat, 27 Jul 2024 17:16:24 -0700 Subject: [PATCH 3/3] improved cmake --- CMakeLists.txt | 68 +++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e5f9677..eb2c013 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,18 +2,17 @@ # Copyright (C) 2019-2023 Intel Corporation cmake_minimum_required(VERSION 3.5) include(version.cmake) -project(safestring - VERSION ${SAFEC_VERSION_STRING} - DESCRIPTION "Safe C string library" -) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") -option(BUILD_SHARED_LIBS "Build using shared libraries" ON) +project(safestring VERSION ${SAFEC_VERSION_STRING} + LANGUAGES C + DESCRIPTION "Safe C string library") -option(BUILD_UNITTESTS "Build also project unit-tests" OFF) +#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") +#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") +#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) +option(BUILD_UNITTESTS "Build also project unit-tests" OFF) if(NOT DEFINED BUILD_OPT_DEFAULT) option(BUILD_OPT_DEFAULT "Build option default" ON) endif() @@ -156,14 +155,10 @@ set(HEADER_FILES include/safe_lib_errno.h include/snprintf_s.h) include_directories(include) - -# conains all the objects individual files *.o add_library(${PROJECT_NAME}_objlib OBJECT ${SOURCES}) set_target_properties(${PROJECT_NAME}_objlib PROPERTIES POSITION_INDEPENDENT_CODE ON) - target_compile_definitions(${PROJECT_NAME}_objlib PRIVATE -DSTDC_HEADERS) - target_compile_options(${PROJECT_NAME}_objlib PRIVATE -Wno-unknown-pragmas -Wno-unused-parameter) if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 7) @@ -188,7 +183,6 @@ if(CMAKE_COMPILER_IS_GNUCC AND target_compile_options(${PROJECT_NAME}_objlib PRIVATE -mmitigate-rop) endif() set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now") - option(BUILD_ERROR_ON_WARNING "Fail compilation on warning" OFF) if(BUILD_ERROR_ON_WARNING) @@ -197,30 +191,30 @@ endif() target_compile_options(${PROJECT_NAME}_objlib PRIVATE $<$:-s>) -# from HEAD -#add_library(${PROJECT_NAME}_shared SHARED $) -#add_library(${PROJECT_NAME}_static STATIC $) +add_library(${PROJECT_NAME}_shared SHARED $) +set_target_properties(${PROJECT_NAME}_shared PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) +set_target_properties(${PROJECT_NAME}_shared PROPERTIES VERSION ${SAFEC_VERSION_STRING} SOVERSION 1) +add_library(${PROJECT_NAME}_static STATIC $) +set_target_properties(${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) + +#add_library(${PROJECT_NAME} SHARED $) +#add_library(${PROJECT_NAME} STATIC $) +#add_library(${PROJECT_NAME} ${SOURCES}) -#target_include_directories(${PROJECT_NAME}_shared PUBLIC +#target_include_directories(${PROJECT_NAME} PUBLIC # $ # $ #) #target_include_directories(${PROJECT_NAME}_static PUBLIC include) -#======= -#add_library(${PROJECT_NAME} SHARED $) -#add_library(${PROJECT_NAME} STATIC $) -add_library(${PROJECT_NAME} ${SOURCES}) -#set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER ${HEADER_FILES}) #target_include_directories(${PROJECT_NAME}_shared PUBLIC include) #target_include_directories(${PROJECT_NAME}_static PUBLIC include) #target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) -target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) -install(TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) -install(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}) - -set_target_properties(${PROJECT_NAME}_shared PROPERTIES VERSION ${SAFEC_VERSION_STRING}) -set_target_properties(${PROJECT_NAME}_static PROPERTIES VERSION ${SAFEC_VERSION_STRING}) +#target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) +#target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) +#set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER ${HEADER_FILES}) +#set_target_properties(${PROJECT_NAME}_shared PROPERTIES VERSION ${SAFEC_VERSION_STRING}) +#set_target_properties(${PROJECT_NAME}_static PROPERTIES VERSION ${SAFEC_VERSION_STRING}) +#set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${SAFEC_VERSION_STRING}) if(BUILD_UNITTESTS) add_subdirectory(unittests) @@ -235,18 +229,18 @@ set(PUBLIC_HEADERS include/safe_types.h include/snprintf_s.h ) +#set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}") -set_target_properties(${PROJECT_NAME}_shared PROPERTIES - PUBLIC_HEADER "${PUBLIC_HEADERS}" -) - -install(TARGETS ${PROJECT_NAME}_shared EXPORT ${PROJECT_NAME}Config +#install(TARGETS ${PROJECT_NAME} +# LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) +#install(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}) +install(TARGETS ${PROJECT_NAME}_shared ${PROJECT_NAME}_static LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) -install(EXPORT ${PROJECT_NAME}Config DESTINATION share/${PROJECT_NAME}/cmake) - +#install(EXPORT ${PROJECT_NAME}Config DESTINATION share/${PROJECT_NAME}/cmake) export(TARGETS ${PROJECT_NAME}_shared FILE ${PROJECT_NAME}Config.cmake) # Debian package information for CPack