diff --git a/CMakeLists.txt b/CMakeLists.txt index 18b49a6..ae51f3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,16 +1,15 @@ cmake_minimum_required(VERSION 3.5) -project(kni) +set(lib_name tsg_master) +project(lib_name) set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) include(Version) -include(Package) +set(CMAKE_MACOSX_RPATH 0) set(CMAKE_CXX_STANDARD 11) set(CMAKE_C_STANDARD 11) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") -#set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lasan -fsanitize-recover=address -fsanitize=address -fno-omit-frame-pointer") - #for ASAN set(ASAN_OPTION "OFF" CACHE STRING " set asan type chosen by the user, using OFF as default") set_property(CACHE ASAN_OPTION PROPERTY STRINGS OFF ADDRESS THREAD) @@ -30,14 +29,26 @@ endif() # end of for ASAN + + add_definitions(-D_GNU_SOURCE) if (CMAKE_BUILD_TYPE STREQUAL Debug) add_definitions(-DDEBUG) endif() +set(CMAKE_INSTALL_PREFIX /home/mesasoft/sapp_run) + + add_subdirectory(vendor) add_subdirectory(common) add_subdirectory(entry) -# cmake -DCMAKE_BUILD_TYPE=Debug/RelWithDebInfo \ No newline at end of file +set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE ${PROJECT_SOURCE_DIR}/cmake/PreInstall.in) + +set(CPACK_RPM_LIBRARIES_USER_FILELIST "%config(noreplace) ${CMAKE_INSTALL_PREFIX}/etc/kni/kni.conf") +install(FILES conf/kni/kni.inf DESTINATION ${CMAKE_INSTALL_PREFIX}/plug/business/kni COMPONENT PROFILE) +install(FILES conf/kni/kni.conf DESTINATION ${CMAKE_INSTALL_PREFIX}/etc/kni COMPONENT PROFILE) + + +include(Package) \ No newline at end of file diff --git a/cmake/Package.cmake b/cmake/Package.cmake index 8fbd247..2aec985 100644 --- a/cmake/Package.cmake +++ b/cmake/Package.cmake @@ -1,7 +1,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CPACK_PACKAGE_NAME "kni-debug") + set(CPACK_PACKAGE_NAME "${lib_name}-debug") else() - set(CPACK_PACKAGE_NAME "kni") + set(CPACK_PACKAGE_NAME "${lib_name}")) endif() message(STATUS "Package: ${CPACK_PACKAGE_NAME}") @@ -10,8 +10,9 @@ set(CPACK_PACKAGE_VENDOR "MESASOFT") set(CPACK_PACKAGE_VERSION_MAJOR "${KNI_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${KNI_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${KNI_VERSION_PATCH}.${KNI_DESCRIBE}") -set(CMAKE_INSTALL_PREFIX "/home/mesasoft/sapp_run") set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") +set(CPACK_PACKAGE_VERSION "${KNI_VERSION_MAJOR}.${KNI_VERSION_MINOR}.${KNI_VERSION_PATCH}.${KNI_DESCRIBE}") +execute_process(COMMAND bash -c "echo -ne \"`uname -r | awk -F'.' '{print $5\".\"$6\".\"$7}'`\"" OUTPUT_VARIABLE SYSTEM_VERSION) #execute_process(COMMAND sh changelog.sh ${CMAKE_BINARY_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/cmake) #SET(CPACK_RPM_CHANGELOG_FILE ${CMAKE_BINARY_DIR}/changelog.txt) @@ -19,28 +20,26 @@ set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") # RPM Build set(CPACK_GENERATOR "RPM") -set(CPACK_RPM_AUTO_GENERATED_FILE_NAME ON) -set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") -set(CPACK_RPM_PACKAGE_AUTOREQPROV "no") -set(CPACK_RPM_PACKAGE_RELEASE_DIST on) -set(CPACK_RPM_DEBUGINFO_PACKAGE on) +set(CPACK_RPM_PACKAGE_VENDOR "MESA") +set(CPACK_RPM_PACKAGE_AUTOREQPROV "yes") +set(CPACK_RPM_PACKAGE_RELEASE_LIBRARY "on") +set(CPACK_RPM_DEBUGINFO_PACKAGE "on") +set(CPACK_RPM_PACKAGE_DEBUG 1) -set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PreInstall.in) -#set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PostInstall.in) -#set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PostUninstall.in) -#set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PreUninstall.in) +set(CPACK_RPM_COMPONENT_INSTALL ON) +set(CPACK_COMPONENTS_IGNORE_GROUPS 1) +set(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP) +set(CPACK_COMPONENT_HEADER_DISPLAY_NAME "develop") -install(FILES build/entry/libkni.so DESTINATION ./plug/business/kni) -install(FILES conf/kni/kni.inf DESTINATION ./plug/business/kni) -install(FILES conf/kni/kni.conf DESTINATION ./etc/kni) +set(CPACK_COMPONENT_LIBRARIES_REQUIRED TRUE) +set(CPACK_RPM_LIBRARIES_PACKAGE_NAME ${CPACK_PACKAGE_NAME}) +set(CPACK_RPM_LIBRARIES_FILE_NAME "${CPACK_RPM_LIBRARIES_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${SYSTEM_VERSION}.rpm") +set(CPACK_RPM_LIBRARIES_DEBUGINFO_FILE_NAME "${CPACK_RPM_LIBRARIES_PACKAGE_NAME}-debuginfo-${CPACK_PACKAGE_VERSION}-${SYSTEM_VERSION}.rpm") -# Must uninstall the debug package before install release package -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CPACK_RPM_PACKAGE_CONFLICTS "kni") -else() - set(CPACK_RPM_PACKAGE_CONFLICTS "kni-debug") -endif() +set(CPACK_COMPONENT_PROFILE_GROUP "libraries") +set(CPACK_COMPONENT_LIBRARIES_GROUP "libraries") +set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}") +set(CPACK_RPM_PACKAGE_CONFLICTS ${CPACK_PACKAGE_NAME}) -# setup %config(noreplace) -set(CPACK_RPM_USER_FILELIST "%config(noreplace) ${CMAKE_INSTALL_PREFIX}/etc/kni/kni.conf") +set(CPACK_RPM_PACKAGE_CONFLICTS ${CPACK_PACKAGE_NAME}) include(CPack) diff --git a/cmake/Version.cmake b/cmake/Version.cmake index e48f6b8..5854564 100644 --- a/cmake/Version.cmake +++ b/cmake/Version.cmake @@ -11,7 +11,7 @@ file(COPY ${__SOURCE_AUTORESIVISION} DESTINATION ${CMAKE_BINARY_DIR} WORLD_READ WORLD_EXECUTE) # execute autorevision.sh to generate version information -execute_process(COMMAND ${__AUTORESIVISION} -t cmake -o ${__VERSION_CACHE} OUTPUT_FILE ${__VERSION_CONFIG}) +execute_process(COMMAND ${__AUTORESIVISION} -t cmake -o ${__VERSION_CACHE} OUTPUT_FILE ${__VERSION_CONFIG} ERROR_QUIET) include(${__VERSION_CONFIG}) # extract major, minor, patch version from git tag diff --git a/entry/CMakeLists.txt b/entry/CMakeLists.txt index c43d5b4..d63c40b 100644 --- a/entry/CMakeLists.txt +++ b/entry/CMakeLists.txt @@ -1,3 +1,5 @@ +set(CMAKE_INSTALL_PREFIX /home/mesasoft/sapp_run) add_library(kni SHARED src/kni_entry.cpp src/tfe_mgr.cpp src/kni_tun.cpp src/kni_pxy_tcp_option.cpp src/kni_dynamic_bypass.cpp) target_include_directories(kni PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) -target_link_libraries(kni common MESA_prof_load MESA_htable MESA_field_stat maatframe mrzcpd dabloom) \ No newline at end of file +target_link_libraries(kni common MESA_prof_load MESA_htable MESA_field_stat maatframe mrzcpd dabloom) +install(TARGETS kni LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/plug/business/kni COMPONENT LIBRARIES)