瀏覽代碼

CMake: Refactor build files.

master
Jari Vetoniemi 10 年之前
父節點
當前提交
81b579568a
共有 4 個文件被更改,包括 66 次插入27 次删除
  1. +49
    -23
      CMakeLists.txt
  2. +1
    -1
      bin/CMakeLists.txt
  3. +3
    -2
      lib/CMakeLists.txt
  4. +13
    -1
      src/CMakeLists.txt

+ 49
- 23
CMakeLists.txt 查看文件

@ -1,40 +1,62 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(pi9)
set(PI9_NAME "pi9")
set(PI9_DESCRIPTION "9p server abstraction library")
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
PROJECT(pi9 VERSION 0.0.1 LANGUAGES C)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake")
# Subprojects
include(subproject)
add_subdirectory(lib)
# CPack
set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
set(CPACK_GENERATOR "7Z")
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
set(CPACK_PACKAGE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pkg")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "9p server abstraction library")
set(CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION ON)
# Includes
include(GNUInstallDirs)
include(FeatureSummary)
include(CPack)
OPTION(PI9_BUILD_STATIC "Build pi9 as static library" OFF)
OPTION(PI9_BUILD_BINARIES "Build binaries" ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${pi9_SOURCE_DIR}/CMake)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
add_feature_info(Static PI9_BUILD_STATIC "Compile as static library")
add_feature_info(Tests PI9_BUILD_TESTS "Compile tests")
if (NOT PI9_BUILD_STATIC)
set(BUILD_SHARED_LIBS ON)
endif ()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib")
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(ldflags -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now)
set(ldflags -Wl,-O1,--no-undefined,--sort-common,--as-needed,-z,relro,-z,now)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${ldflags}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${ldflags}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${ldflags}")
if ("${CMAKE_C_FLAGS}" STREQUAL "")
add_definitions(-O2)
add_definitions(-fstack-protector-strong -fstack-check -flto)
endif ()
add_definitions(
-Wall -Wextra -Wno-variadic-macros -Wno-long-long -Wformat=2 -Winit-self -Wfloat-equal
-Wcast-align -Wpointer-arith -Wmissing-prototypes -Wsuggest-attribute=pure -Wsuggest-attribute=const)
add_definitions(-fstack-protector-strong -fstack-check -pie -flto)
endif ()
if (UNIX AND CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if (${CMAKE_VERSION} VERSION_LESS 2.8.9)
add_definitions(-fPIC)
endif ()
endif ()
add_definitions(-std=c99 -D_DEFAULT_SOURCE)
# -std=c99 -fpic -fpie -D_DEFAULT_SOURCE
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE OFF)
add_definitions(-D_DEFAULT_SOURCE)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/lib/chck)
add_subdirectory(lib)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src ${CHCK_INCLUDE_DIRS})
add_subdirectory(src)
if (PI9_BUILD_BINARIES)
@ -42,3 +64,7 @@ if (PI9_BUILD_BINARIES)
endif ()
file(COPY src/pi9.h src/pi9_string.h DESTINATION include/pi9)
if ("${CMAKE_PROJECT_NAME}" STREQUAL "${PROJECT_NAME}")
feature_summary(WHAT ALL)
endif ()

+ 1
- 1
bin/CMakeLists.txt 查看文件

@ -1,2 +1,2 @@
add_executable(server server.c)
target_link_libraries(server pi9 chck_pi9_server)
target_link_libraries(server PRIVATE pi9 ${CHCK_LIBRARIES})

+ 3
- 2
lib/CMakeLists.txt 查看文件

@ -1,2 +1,3 @@
add_library(chck_pi9_lib STATIC chck/chck/buffer/buffer.c)
add_library(chck_pi9_server STATIC chck/chck/pool/pool.c chck/chck/lut/lut.c)
set(CHCK_BUILD_STATIC ON CACHE STRING "Build chck statically if not found systemwide" FORCE)
set(CHCK_BUILD_TESTS OFF CACHE STRING "Do not build chck tests" FORCE)
add_subproject(chck)

+ 13
- 1
src/CMakeLists.txt 查看文件

@ -1,2 +1,14 @@
add_library(pi9 pi9.c pi9_string.c)
target_link_libraries(pi9 chck_pi9_lib)
target_link_libraries(pi9 PRIVATE ${CHCK_LIBRARIES})
# Parse soversion version
string(REGEX MATCHALL "[0-9]+" VERSION_COMPONENTS ${PROJECT_VERSION})
list(GET VERSION_COMPONENTS 0 SOVERSION)
set_target_properties(pi9 PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${SOVERSION})
set(PI9_LIBRARIES pi9 CACHE STRING "Libraries of pi9" FORCE)
set(PI9_INCLUDE_DIRS "${PROJECT_BINARY_DIR}/include" CACHE STRING "Include directories of pi9" FORCE)
mark_as_advanced(PI9_LIBRARIES PI9_INCLUDE_DIRS)
install(TARGETS pi9 DESTINATION "${CMAKE_INSTALL_LIBDIR}")
install(DIRECTORY "${PROJECT_BINARY_DIR}/include/pi9" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")

Loading…
取消
儲存