|
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
|
PROJECT(pi9)
|
|
set(PI9_NAME "pi9")
|
|
set(PI9_DESCRIPTION "9p server abstraction library")
|
|
|
|
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)
|
|
|
|
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
|
set(ldflags -Wl,-O1,--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}")
|
|
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)
|
|
|
|
include_directories(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lib/chck)
|
|
|
|
add_subdirectory(lib)
|
|
add_subdirectory(src)
|
|
|
|
if (PI9_BUILD_BINARIES)
|
|
add_subdirectory(bin)
|
|
endif ()
|
|
|
|
file(COPY src/pi9.h src/pi9_string.h DESTINATION include/pi9)
|