Remove remaining traces of automatic versioning code
This commit is contained in:
+14
-146
@@ -1,7 +1,14 @@
|
|||||||
# AUTOGENERATED COPYRIGHT HEADER START
|
# Copyright 2017-2025 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||||
# Copyright (C) 2017-2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
#
|
||||||
# AUTOGENERATED COPYRIGHT HEADER END
|
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||||
cmake_minimum_required(VERSION 3.26...3.29.2 FATAL_ERROR)
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 4.0 FATAL_ERROR)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# CMake Setup
|
# CMake Setup
|
||||||
@@ -12,8 +19,6 @@ list(APPEND CMAKE_MESSAGE_INDENT "[${PROJECT_NAME}] ")
|
|||||||
# Module Search Paths
|
# Module Search Paths
|
||||||
list(APPEND CMAKE_MODULE_PATH
|
list(APPEND CMAKE_MODULE_PATH
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake-clang"
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake-version"
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -21,158 +26,21 @@ list(APPEND CMAKE_MODULE_PATH
|
|||||||
#- Interprocedural optimizations
|
#- Interprocedural optimizations
|
||||||
include("CheckIPOSupported")
|
include("CheckIPOSupported")
|
||||||
|
|
||||||
#- CMake-based Versioning
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
include("version")
|
|
||||||
|
|
||||||
#- CMake-based Clang integration
|
|
||||||
include("clang")
|
|
||||||
|
|
||||||
SET_PROPERTY( GLOBAL PROPERTY USE_FOLDERS ON)
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Versioning
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
version(GENERATE _VERSION COMPRESSED MAJOR 0 MINOR 0 PATCH 0 TWEAK 0 REQUIRE "PATCH;")
|
|
||||||
version(PARSE _VERSION "${_VERSION}" REQUIRE "PATCH;TWEAK")
|
|
||||||
|
|
||||||
# If possible, automatically generate versions from git.
|
|
||||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git")
|
|
||||||
find_program(GIT
|
|
||||||
NAMES
|
|
||||||
git
|
|
||||||
git.exe
|
|
||||||
)
|
|
||||||
|
|
||||||
if(EXISTS "${GIT}")
|
|
||||||
# Try and calculate the exist version using git.
|
|
||||||
execute_process(COMMAND "${GIT}" describe --tags --long --abbrev=8 HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} RESULT_VARIABLE GIT_RESULT OUTPUT_VARIABLE GIT_OUTPUT ERROR_VARIABLE GIT_ERROR OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
|
||||||
if((GIT_RESULT EQUAL 0) AND (NOT "${GIT_OUTPUT}" STREQUAL ""))
|
|
||||||
# Result will be MAJOR.MINOR.PATCH-TWEAK-gHASH
|
|
||||||
string(REPLACE "-" ";" GIT_OUTPUT "${GIT_OUTPUT}")
|
|
||||||
string(REPLACE "." ";" GIT_OUTPUT "${GIT_OUTPUT}")
|
|
||||||
|
|
||||||
# Split into components
|
|
||||||
list(GET GIT_OUTPUT 0 GIT_OUTPUT_MAJOR)
|
|
||||||
list(GET GIT_OUTPUT 1 GIT_OUTPUT_MINOR)
|
|
||||||
list(GET GIT_OUTPUT 2 GIT_OUTPUT_PATCH)
|
|
||||||
list(GET GIT_OUTPUT 3 GIT_OUTPUT_TWEAK)
|
|
||||||
list(GET GIT_OUTPUT 4 GIT_OUTPUT_BUILD)
|
|
||||||
|
|
||||||
# Special case: Tag contains prerelease
|
|
||||||
if(GIT_OUTPUT_PATCH MATCHES "([0-9]+)([a-zA-Z]+)([0-9]*)")
|
|
||||||
# Patch requires special parsing.
|
|
||||||
set(GIT_OUTPUT_PATCH "${CMAKE_MATCH_1}")
|
|
||||||
if(CMAKE_MATCH_3 GREATER 0)
|
|
||||||
set(GIT_OUTPUT_PRERELEASE "${CMAKE_MATCH_2}")
|
|
||||||
else()
|
|
||||||
set(GIT_OUTPUT_PRERELEASE "a")
|
|
||||||
endif()
|
|
||||||
MATH(EXPR GIT_OUTPUT_TWEAK "${GIT_OUTPUT_TWEAK} + ${CMAKE_MATCH_3}")
|
|
||||||
|
|
||||||
# Modify the global version
|
|
||||||
version(MODIFY _VERSION "${_VERSION}" COMPRESS
|
|
||||||
MAJOR "${GIT_OUTPUT_MAJOR}"
|
|
||||||
MINOR "${GIT_OUTPUT_MINOR}"
|
|
||||||
PATCH "${GIT_OUTPUT_PATCH}"
|
|
||||||
TWEAK "${GIT_OUTPUT_TWEAK}"
|
|
||||||
BUILD "${GIT_OUTPUT_BUILD}"
|
|
||||||
PRERELEASE "${GIT_OUTPUT_PRERELEASE}"
|
|
||||||
REQUIRE "PATCH;TWEAK"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
# Modify the global version
|
|
||||||
version(MODIFY _VERSION "${_VERSION}" COMPRESS
|
|
||||||
MAJOR "${GIT_OUTPUT_MAJOR}"
|
|
||||||
MINOR "${GIT_OUTPUT_MINOR}"
|
|
||||||
PATCH "${GIT_OUTPUT_PATCH}"
|
|
||||||
TWEAK "${GIT_OUTPUT_TWEAK}"
|
|
||||||
BUILD "${GIT_OUTPUT_BUILD}"
|
|
||||||
PRERELEASE "a"
|
|
||||||
REQUIRE "PATCH;TWEAK"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
execute_process(COMMAND "${GIT}" rev-list --count HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} RESULT_VARIABLE GIT_RESULT OUTPUT_VARIABLE GIT_OUTPUT ERROR_VARIABLE GIT_ERROR OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
|
||||||
if((GIT_RESULT EQUAL 0) AND (NOT "${GIT_OUTPUT}" STREQUAL ""))
|
|
||||||
version(MODIFY _VERSION "${_VERSION}" COMPRESS
|
|
||||||
TWEAK "${GIT_OUTPUT}"
|
|
||||||
PRERELEASE "a"
|
|
||||||
REQUIRE "PATCH;TWEAK"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Determine the build using git.
|
|
||||||
execute_process(COMMAND "${GIT}" log -1 "--pretty=format:g%h" --abbrev=8 HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} RESULT_VARIABLE GIT_RESULT OUTPUT_VARIABLE GIT_OUTPUT ERROR_VARIABLE GIT_ERROR OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
|
||||||
if((GIT_RESULT EQUAL 0) AND (NOT "${GIT_OUTPUT}" STREQUAL ""))
|
|
||||||
version(MODIFY _VERSION "${_VERSION}" COMPRESS
|
|
||||||
BUILD "${GIT_OUTPUT}"
|
|
||||||
REQUIRE "PATCH;TWEAK"
|
|
||||||
)
|
|
||||||
else()
|
|
||||||
message(WARNING "Failed to detect build version with 'git'.")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(WARNING "Failed to automatically detect version with 'git'.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(WARNING "'git' not found, automatic version detection disabled.")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(STATUS "Not a git repository, automatic version detection disabled.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Allow manual overrides of the detected version.
|
|
||||||
if(${PREFIX}VERSION)
|
|
||||||
version(PARSE _VERSION_CFG "${${PREFIX}VERSION}" REQUIRE "PATCH;TWEAK")
|
|
||||||
if("${_VERSION_CFG_BUILD}" STREQUAL "")
|
|
||||||
set(_VERSION_CFG_BUILD "${_VERSION_BUILD}")
|
|
||||||
endif()
|
|
||||||
version(GENERATE _VERSION COMPRESS
|
|
||||||
MAJOR "${_VERSION_CFG_MAJOR}"
|
|
||||||
MINOR "${_VERSION_CFG_MINOR}"
|
|
||||||
PATCH "${_VERSION_CFG_PATCH}"
|
|
||||||
TWEAK "${_VERSION_CFG_TWEAK}"
|
|
||||||
PRERELEASE "${_VERSION_CFG_PRERELEASE}"
|
|
||||||
BUILD "${_VERSION_CFG_BUILD}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Fix up missing parts of the Version
|
|
||||||
version(PARSE _VERSION "${_VERSION}" REQUIRE "PATCH;TWEAK")
|
|
||||||
|
|
||||||
set(_VERSION_THIN "${_VERSION_MAJOR}.${_VERSION_MINOR}.${_VERSION_PATCH}")
|
|
||||||
if(NOT (_VERSION_PRERELEASE STREQUAL ""))
|
|
||||||
set(_VERSION_THIN "${_VERSION_THIN}${_VERSION_PRERELEASE}${_VERSION_TWEAK}")
|
|
||||||
endif()
|
|
||||||
if(NOT (VERSION_COMMIT STREQUAL ""))
|
|
||||||
set(_VERSION_THIN "${_VERSION_THIN}-${_VERSION_BUILD}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Parse & Log the detected version.
|
|
||||||
message(STATUS "Version ${_VERSION_THIN}")
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Project
|
# Project
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
# Metadata
|
# Metadata
|
||||||
version(GENERATE PROJECT_VERSION
|
|
||||||
MAJOR "${_VERSION_MAJOR}"
|
|
||||||
MINOR "${_VERSION_MINOR}"
|
|
||||||
PATCH "${_VERSION_PATCH}"
|
|
||||||
TWEAK "${_VERSION_TWEAK}"
|
|
||||||
REQUIRE "PATCH;TWEAK"
|
|
||||||
)
|
|
||||||
project(
|
project(
|
||||||
${PROJECT_NAME}
|
${PROJECT_NAME}
|
||||||
VERSION ${PROJECT_VERSION}
|
|
||||||
)
|
)
|
||||||
set(PROJECT_IDENTIFER "com.xaymar.blitzllvm")
|
set(PROJECT_IDENTIFER "com.xaymar.blitzllvm")
|
||||||
set(PROJECT_TITLE "BlitzLLVM")
|
set(PROJECT_TITLE "BlitzLLVM")
|
||||||
set(PROJECT_AUTHORS "Xaymar <info@xaymar.com>") # ToDo: Generate from AUTHORS
|
set(PROJECT_AUTHORS "Xaymar <info@xaymar.com>") # ToDo: Generate from AUTHORS
|
||||||
set(PROJECT_COPYRIGHT "All Rights Reserved. See LICENSE file for more information") # ToDo: Generate from LICENSE
|
set(PROJECT_COPYRIGHT "All Rights Reserved. See LICENSE file for more information") # ToDo: Generate from LICENSE
|
||||||
set(PROJECT_TRADEMARKS "")
|
set(PROJECT_TRADEMARKS "")
|
||||||
|
|
||||||
function(init_project TARGET)
|
function(init_project TARGET)
|
||||||
set_target_properties(${TARGET} PROPERTIES
|
set_target_properties(${TARGET} PROPERTIES
|
||||||
@@ -233,4 +101,4 @@ endfunction()
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Sub-projects
|
# Sub-projects
|
||||||
################################################################################
|
################################################################################
|
||||||
ADD_SUBDIRECTORY("code_compiler")
|
add_subdirectory("code_compiler")
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
# AUTOGENERATED COPYRIGHT HEADER START
|
# AUTOGENERATED COPYRIGHT HEADER START
|
||||||
# Copyright (C) 2017-2025 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
# Copyright (C) 2017-2025 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||||
# AUTOGENERATED COPYRIGHT HEADER END
|
# AUTOGENERATED COPYRIGHT HEADER END
|
||||||
project(compiler
|
project(compiler)
|
||||||
VERSION ${PROJECT_VERSION}
|
|
||||||
)
|
|
||||||
add_executable(${PROJECT_NAME})
|
add_executable(${PROJECT_NAME})
|
||||||
init_project(${PROJECT_NAME})
|
init_project(${PROJECT_NAME})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user