Skip to content

Commit 40ed7c3

Browse files
committed
Extract the version calculation from git from the main CMake file, so the NixOS build can run after determining the version and removing the .git tree.
1 parent 64e3043 commit 40ed7c3

8 files changed

Lines changed: 28 additions & 17 deletions

File tree

.github/workflows/builds-ubuntu.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ jobs:
3131
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
3232
shell: bash
3333
run: |
34-
cmake -S . -B builds -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=off -DPYTHON_VERSION_TO_EMBED=3.12 -DSENTRY_CRASH_REPORTING=ON -DSENTRY_DSN=$SENTRY_DSN
34+
export KNOBKRAFT_EXTERNAL_VERSION="$(cmake -P cmake/calc_version.cmake)"
35+
cmake -S . -B builds -DKNOBKRAFT_EXTERNAL_VERSION=$KNOBKRAFT_EXTERNAL_VERSION -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=off -DPYTHON_VERSION_TO_EMBED=3.12 -DSENTRY_CRASH_REPORTING=ON -DSENTRY_DSN=$SENTRY_DSN
3536
3637
- name: CMake build
3738
run: cmake --build builds --target package -- -j4

.github/workflows/builds-ubuntu24.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ jobs:
3939
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
4040
shell: bash
4141
run: |
42-
CC=gcc-14 CXX=g++-14 cmake -S . -B builds -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=off -DPYTHON_VERSION_TO_EMBED=3.12 -DSENTRY_CRASH_REPORTING=ON -DSENTRY_DSN=$SENTRY_DSN
42+
export KNOBKRAFT_EXTERNAL_VERSION="$(cmake -P cmake/calc_version.cmake)"
43+
CC=gcc-14 CXX=g++-14 cmake -S . -B builds -DKNOBKRAFT_EXTERNAL_VERSION=$KNOBKRAFT_EXTERNAL_VERSION -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=off -DPYTHON_VERSION_TO_EMBED=3.12 -DSENTRY_CRASH_REPORTING=ON -DSENTRY_DSN=$SENTRY_DSN
4344
4445
- name: CMake build
4546
run: |

.github/workflows/builds-windows.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ jobs:
4848
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
4949
shell: bash
5050
run: |
51-
cmake -S . -B Builds -G "Visual Studio 17 2022" -A x64 -DCRASH_REPORTING=ON -DSENTRY_DSN=$SENTRY_DSN -DSPARKLE_UPDATES=ON
51+
export KNOBKRAFT_EXTERNAL_VERSION="$(cmake -P cmake/calc_version.cmake)"
52+
cmake -S . -B Builds -G "Visual Studio 17 2022" -A x64 -DKNOBKRAFT_EXTERNAL_VERSION=$KNOBKRAFT_EXTERNAL_VERSION -DCRASH_REPORTING=ON -DSENTRY_DSN=$SENTRY_DSN -DSPARKLE_UPDATES=ON
5253
5354
- name: Run Python tests first
5455
run: |

CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ option(ASAN "Use Address Sanitization for Debug version (Windows only for now)"
3939
# Gin requests C++ 20.
4040
set(CMAKE_CXX_STANDARD 20)
4141
set(CMAKE_CXX_STANDARD_REQUIRED ON)
42+
if(UNIX AND NOT APPLE)
43+
# Linux settings allowing NixOs to be built
44+
set(CMAKE_AR "gcc-ar")
45+
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcs <TARGET> <LINK_FLAGS> <OBJECTS>")
46+
set(CMAKE_CXX_ARCHIVE_FINISH true
47+
ENDIF()
4248
add_definitions(-D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING)
4349

4450
# To avoid dependency on WebKit. This also came with MacOS, but as webkit is heavyweight, it is probably a good idea to turn it off for all

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ all: configure build sign-dmg verify-signed
3434
apple: notarize staple verify-notarization
3535

3636
configure:
37-
@echo "Configuring build for type $(BUILD_TYPE) in directory $(BUILD_DIR), using Python from $(PYTHON_TO_USE)"
38-
cmake -S . -B $(BUILD_DIR) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DPYTHON_EXECUTABLE=$(PYTHON_TO_USE) -DCODESIGN_CERTIFICATE_NAME="$(APPLE_DEVELOPER_IDENTITY)"
37+
export KNOBKRAFT_EXTERNAL_VERSION="$(cmake -P cmake/calc_version.cmake)"
38+
@echo "Configuring build for type $(BUILD_TYPE) in directory $(BUILD_DIR), using Python from $(PYTHON_TO_USE). Version is $KNOBKRAFT_EXTERNAL_VERSION"
39+
cmake -S . -B $(BUILD_DIR) -DKNOBKRAFT_EXTERNAL_VERSION=$KNOBKRAFT_EXTERNAL_VERSION -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DPYTHON_EXECUTABLE=$(PYTHON_TO_USE) -DCODESIGN_CERTIFICATE_NAME="$(APPLE_DEVELOPER_IDENTITY)"
3940

4041
.PHONY: build
4142
build $(KNOBKRAFT_DMG):

The-Orm/CMakeLists.txt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,8 @@
66

77
cmake_minimum_required(VERSION 3.14)
88

9-
# Get the version from our sub cmakefile
10-
execute_process(
11-
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_LIST_DIR}/gitversion.cmake"
12-
ERROR_VARIABLE PROJECT_VERSION
13-
ERROR_STRIP_TRAILING_WHITESPACE
14-
)
15-
# Cleanup output
16-
string(REGEX REPLACE "^[[:space:]]+|[[:space:]]+$" "" PROJECT_VERSION "${PROJECT_VERSION}")
17-
string(REGEX REPLACE "\n$" "" PROJECT_VERSION "${PROJECT_VERSION}")
18-
message(STATUS "Project version is '${PROJECT_VERSION}'")
19-
209
# Start project
21-
project(KnobKraftOrm VERSION ${PROJECT_VERSION})
10+
project(KnobKraftOrm VERSION ${KNOBKRAFT_EXTERNAL_VERSION})
2211

2312
# Now you can use PROJECT_DEV_TAG in your CMake scripts or in your code to handle the "-dev" part.
2413
# For example, you could add a preprocessor definition that your code could use:

cmake/calc_version.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Get the version from our sub cmakefile
2+
execute_process(
3+
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_LIST_DIR}/gitversion.cmake"
4+
ERROR_VARIABLE PROJECT_VERSION
5+
ERROR_STRIP_TRAILING_WHITESPACE
6+
)
7+
8+
# Cleanup output
9+
string(REGEX REPLACE "^[[:space:]]+|[[:space:]]+$" "" PROJECT_VERSION "${PROJECT_VERSION}")
10+
string(REGEX REPLACE "\n$" "" PROJECT_VERSION "${PROJECT_VERSION}")
11+
message("${PROJECT_VERSION}")
12+

0 commit comments

Comments
 (0)