cmake: Refactor CMakeLists
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "cmake/clang"]
|
||||||
|
path = cmake/clang
|
||||||
|
url = https://github.com/Xaymar/cmake-clang.git
|
||||||
+35
-43
@@ -14,15 +14,11 @@
|
|||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
################################################################################
|
#================================================================================#
|
||||||
# CMake Bootstrap
|
# Define Project
|
||||||
################################################################################
|
#================================================================================#
|
||||||
# CMake Setup
|
cmake_minimum_required(VERSION 3.15.0)
|
||||||
cmake_minimum_required(VERSION 3.1.0)
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Project Bootstrap
|
|
||||||
################################################################################
|
|
||||||
# Automatic Versioning
|
# Automatic Versioning
|
||||||
set(VERSION_MAJOR 0)
|
set(VERSION_MAJOR 0)
|
||||||
set(VERSION_MINOR 1)
|
set(VERSION_MINOR 1)
|
||||||
@@ -56,25 +52,31 @@ endif()
|
|||||||
|
|
||||||
# Define Project
|
# Define Project
|
||||||
project(
|
project(
|
||||||
datapath
|
DataPath
|
||||||
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}
|
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}
|
||||||
)
|
)
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/modules/")
|
set(PROJECT_FULL_NAME "DataPath IPC Library")
|
||||||
|
set(PROJECT_DESCRIPTION "High Performance Synchronous and Asynchronous IPC Library")
|
||||||
|
set(PROJECT_AUTHORS "Michael Fabian 'Xaymar' Dirks <info@xaymar.com>")
|
||||||
|
set(PROJECT_COPYRIGHT_YEARS "2018 - 2020")
|
||||||
|
|
||||||
# Check if we are compiling standalone
|
#================================================================================#
|
||||||
set(IsStandalone false)
|
# CMake Tools & Modules
|
||||||
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
#================================================================================#
|
||||||
set(IsStandalone true)
|
|
||||||
endif()
|
# CMake Modules
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/clang")
|
||||||
|
|
||||||
# Modules
|
|
||||||
include("util")
|
include("util")
|
||||||
|
include("Clang")
|
||||||
|
|
||||||
# Detect Build Type
|
# Detect Build Type
|
||||||
if(IsStandalone)
|
if(NOT "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
set(PropertyPrefix "")
|
|
||||||
else()
|
|
||||||
set(PropertyPrefix "${PROJECT_NAME}_")
|
set(PropertyPrefix "${PROJECT_NAME}_")
|
||||||
|
else()
|
||||||
|
set(PropertyPrefix "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Detect Architecture
|
# Detect Architecture
|
||||||
@@ -85,27 +87,24 @@ else()
|
|||||||
set(ARCH "x64")
|
set(ARCH "x64")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#================================================================================#
|
||||||
|
# Options
|
||||||
|
#================================================================================#
|
||||||
|
# Static or Dynamic?
|
||||||
|
option(${PropertyPrefix}MAKE_STATIC "Make Static Library" ON)
|
||||||
|
option(${PropertyPrefix}MAKE_DYNAMIC "Make Dynamic Library" OFF)
|
||||||
|
option(${PropertyPrefix}MAKE_MODULE "Make Module Library" OFF)
|
||||||
|
|
||||||
|
#================================================================================#
|
||||||
|
# Sources
|
||||||
|
option(${PropertyPrefix}BUILD_SAMPLES "Build Samples" ON)
|
||||||
|
|
||||||
# Configure Version Header
|
# Configure Version Header
|
||||||
configure_file(
|
configure_file(
|
||||||
"${PROJECT_SOURCE_DIR}/cmake/version.hpp.in"
|
"${PROJECT_SOURCE_DIR}/cmake/version.hpp.in"
|
||||||
"${PROJECT_BINARY_DIR}/include/version.hpp"
|
"${PROJECT_BINARY_DIR}/include/version.hpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Options
|
|
||||||
################################################################################
|
|
||||||
# Static or Dynamic?
|
|
||||||
option(${PropertyPrefix}MAKE_STATIC "Make Static Library" ON)
|
|
||||||
option(${PropertyPrefix}MAKE_DYNAMIC "Make Dynamic Library" OFF)
|
|
||||||
option(${PropertyPrefix}MAKE_MODULE "Make Module Library" OFF)
|
|
||||||
|
|
||||||
# Tests & Samples
|
|
||||||
option(${PropertyPrefix}BUILD_TESTS "Build Tests" ON)
|
|
||||||
option(${PropertyPrefix}BUILD_SAMPLES "Build Samples" ON)
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Source
|
|
||||||
################################################################################
|
|
||||||
# Public (exported with module)
|
# Public (exported with module)
|
||||||
set(PROJECT_PUBLIC
|
set(PROJECT_PUBLIC
|
||||||
"include/bitmask.hpp"
|
"include/bitmask.hpp"
|
||||||
@@ -231,9 +230,9 @@ source_group(TREE "${PROJECT_SOURCE_DIR}/source" PREFIX "Source" FILES ${PROJECT
|
|||||||
source_group(TREE "${PROJECT_SOURCE_DIR}/include" PREFIX "Include" FILES ${PROJECT_PUBLIC})
|
source_group(TREE "${PROJECT_SOURCE_DIR}/include" PREFIX "Include" FILES ${PROJECT_PUBLIC})
|
||||||
source_group(TREE "${PROJECT_BINARY_DIR}" PREFIX "Generated" FILES ${PROJECT_PUBLIC_GENERATED})
|
source_group(TREE "${PROJECT_BINARY_DIR}" PREFIX "Generated" FILES ${PROJECT_PUBLIC_GENERATED})
|
||||||
|
|
||||||
################################################################################
|
#================================================================================#
|
||||||
# Building
|
# Building
|
||||||
################################################################################
|
#================================================================================#
|
||||||
# Library definition
|
# Library definition
|
||||||
if(${PropertyPrefix}MAKE_STATIC)
|
if(${PropertyPrefix}MAKE_STATIC)
|
||||||
add_library(${PROJECT_NAME} STATIC
|
add_library(${PROJECT_NAME} STATIC
|
||||||
@@ -305,10 +304,3 @@ endif()
|
|||||||
if(${PropertyPrefix}BUILD_SAMPLES)
|
if(${PropertyPrefix}BUILD_SAMPLES)
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/samples)
|
add_subdirectory(${PROJECT_SOURCE_DIR}/samples)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Tests
|
|
||||||
################################################################################
|
|
||||||
if(${PropertyPrefix}BUILD_TESTS)
|
|
||||||
add_subdirectory(${PROJECT_SOURCE_DIR}/tests)
|
|
||||||
endif()
|
|
||||||
|
|||||||
Submodule
+1
Submodule cmake/clang added at 9166c8a575
Reference in New Issue
Block a user