github.com/pwn-term/docker@v0.0.0-20210616085119-6e977cce2565/tini/CMakeLists.txt (about) 1 cmake_minimum_required (VERSION 2.8.0) 2 project (tini C) 3 4 # Config 5 set (tini_VERSION_MAJOR 0) 6 set (tini_VERSION_MINOR 19) 7 set (tini_VERSION_PATCH 0) 8 9 # Build options 10 option(MINIMAL "Disable argument parsing and verbose output" OFF) 11 12 if(MINIMAL) 13 add_definitions(-DTINI_MINIMAL=1) 14 endif() 15 16 # Extract git version and dirty-ness 17 execute_process ( 18 COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" log -n 1 --date=local --pretty=format:%h 19 WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" 20 RESULT_VARIABLE git_version_check_ret 21 OUTPUT_VARIABLE tini_VERSION_GIT 22 ) 23 24 execute_process( 25 COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" status --porcelain --untracked-files=no 26 WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" 27 OUTPUT_VARIABLE git_dirty_check_out 28 ) 29 30 if("${git_version_check_ret}" EQUAL 0) 31 set(tini_VERSION_GIT " - git.${tini_VERSION_GIT}") 32 if(NOT "${git_dirty_check_out}" STREQUAL "") 33 set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty") 34 endif() 35 else() 36 set(tini_VERSION_GIT "") 37 endif() 38 39 # Flags 40 include(CheckCSourceCompiles) 41 42 check_c_source_compiles(" 43 #ifndef _FORTIFY_SOURCE 44 #error \"Not defined: _FORTIFY_SOURCE\" 45 #endif 46 int main(void) { 47 return 0; 48 } 49 " HAS_BUILTIN_FORTIFY) 50 51 # Flags 52 if(NOT HAS_BUILTIN_FORTIFY) 53 add_definitions(-D_FORTIFY_SOURCE=2) 54 endif() 55 56 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Werror -Wextra -Wall -pedantic-errors -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat") 57 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-s") 58 59 # Build 60 61 configure_file ( 62 "${PROJECT_SOURCE_DIR}/src/tiniConfig.h.in" 63 "${PROJECT_BINARY_DIR}/tiniConfig.h" 64 @ONLY 65 ) 66 67 configure_file ( 68 "${PROJECT_SOURCE_DIR}/tpl/README.md.in" 69 "${PROJECT_SOURCE_DIR}/README.md" 70 @ONLY 71 ) 72 73 configure_file ( 74 "${PROJECT_SOURCE_DIR}/tpl/VERSION.in" 75 "${PROJECT_BINARY_DIR}/VERSION" 76 @ONLY 77 ) 78 79 80 include_directories ("${PROJECT_BINARY_DIR}") 81 82 add_executable (tini src/tini.c) 83 84 add_executable (tini-static src/tini.c) 85 set_target_properties (tini-static PROPERTIES LINK_FLAGS "-Wl,--no-export-dynamic -static") 86 87 # Installation 88 install (TARGETS tini DESTINATION bin) 89 install (TARGETS tini-static DESTINATION bin) 90 91 # Packaging 92 include (InstallRequiredSystemLibraries) 93 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "A tiny but valid init process for containers") 94 set (CPACK_PACKAGE_VENDOR "Thomas Orozco") 95 set (CPACK_PACKAGE_CONTACT "thomas@orozco.fr") 96 set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") 97 set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") 98 set (CPACK_PACKAGE_VERSION_MAJOR "${tini_VERSION_MAJOR}") 99 set (CPACK_PACKAGE_VERSION_MINOR "${tini_VERSION_MINOR}") 100 set (CPACK_PACKAGE_VERSION_PATCH "${tini_VERSION_PATCH}") 101 set (CPACK_PACKAGE_EXECUTABLES "${CMAKE_PROJECT_NAME}") 102 set (CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}") 103 set (CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${tini_VERSION_MAJOR}.${tini_VERSION_MINOR}.${tini_VERSION_PATCH}") 104 set (CPACK_PACKAGE_VERSION "${tini_VERSION_MAJOR}.${tini_VERSION_MINOR}.${tini_VERSION_PATCH}") 105 106 set (CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") # TODO 107 set (CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.4)") 108 109 set (CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64") 110 111 set (CPACK_GENERATOR "DEB" "RPM") 112 113 include (CPack)