|
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)
|
|
|
|
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,--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)
|
|
endif ()
|
|
|
|
# -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 ${CHCK_INCLUDE_DIRS})
|
|
add_subdirectory(src)
|
|
|
|
if (PI9_BUILD_BINARIES)
|
|
add_subdirectory(bin)
|
|
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 ()
|