cmake: Refactor CMakeLists

This commit is contained in:
Michael Fabian 'Xaymar' Dirks
2020-01-23 01:12:06 +01:00
parent b038d2c680
commit 3dd8e1e102
3 changed files with 39 additions and 43 deletions
+3
View File
@@ -0,0 +1,3 @@
[submodule "cmake/clang"]
path = cmake/clang
url = https://github.com/Xaymar/cmake-clang.git
+35 -43
View File
@@ -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