Skip to content

Commit 6ed7e7f

Browse files
authored
Cope with failed version parsing (#4609)
* Cope with failed version parsing * Better version parsing * populate slang-tag-version with cmake * Neaten cmake
1 parent 49c56d7 commit 6ed7e7f

7 files changed

+27
-10
lines changed

CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ cmake_minimum_required(VERSION 3.25)
44
# from git describe
55
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
66
include(GitVersion)
7-
get_git_version(SLANG_VERSION "${CMAKE_CURRENT_LIST_DIR}")
7+
get_git_version(SLANG_VERSION_NUMERIC SLANG_VERSION_FULL "${CMAKE_CURRENT_LIST_DIR}")
88

99
#
1010
# Our project
1111
#
12-
project(slang VERSION "${SLANG_VERSION}" LANGUAGES)
12+
project(slang VERSION "${SLANG_VERSION_NUMERIC}" LANGUAGES)
13+
set(PROJECT_VERSION "${SLANG_VERSION_FULL}")
1314

1415
#
1516
# Global CMake options

cmake/GitVersion.cmake

+12-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
find_package(Git)
22

33
# Extract a version from the latest tag matching something like v1.2.3.4
4-
function(get_git_version var dir)
4+
function(get_git_version var_numeric var dir)
55
if(NOT DEFINED ${var})
6-
set(version "0.0")
6+
set(version_numeric "0.0.0")
7+
set(version "0.0.0-unknown")
78
if(GIT_EXECUTABLE)
89
set(command
910
"${GIT_EXECUTABLE}"
1011
-C
1112
"${dir}"
1213
describe
13-
--abbrev=0
1414
--tags
1515
--match
1616
v*
@@ -19,19 +19,20 @@ function(get_git_version var dir)
1919
COMMAND ${command}
2020
RESULT_VARIABLE result
2121
OUTPUT_STRIP_TRAILING_WHITESPACE
22-
OUTPUT_VARIABLE version
22+
OUTPUT_VARIABLE version_out
2323
)
2424
if(NOT result EQUAL 0)
2525
message(
2626
WARNING
2727
"Getting ${var} failed: ${command} returned ${result}"
2828
)
29-
elseif("${version}" MATCHES "^v([0-9]+(\.[0-9]+)*).*")
29+
elseif("${version_out}" MATCHES "^v(([0-9]+(\\.[0-9]+)*).*)")
3030
set(version "${CMAKE_MATCH_1}")
31+
set(version_numeric "${CMAKE_MATCH_2}")
3132
else()
3233
message(
3334
WARNING
34-
"Couldn't parse numeric version (like v1.2.3) from ${version}"
35+
"Couldn't parse version (like v1.2.3 or v1.2.3-foo) from ${version_out}"
3536
)
3637
endif()
3738
else()
@@ -42,6 +43,11 @@ function(get_git_version var dir)
4243
endif()
4344
endif()
4445

46+
set(${var_numeric}
47+
${version_numeric}
48+
CACHE STRING
49+
"The project version numeric part, detected using git if available"
50+
)
4551
set(${var}
4652
${version}
4753
CACHE STRING

cmake/SlangTarget.cmake

+8
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ function(slang_add_target dir type)
6060
INCLUDE_FROM_PRIVATE
6161
# Any include directories other targets need to use this target
6262
INCLUDE_DIRECTORIES_PUBLIC
63+
INCLUDE_DIRECTORIES_PRIVATE
6364
# Add a dependency on the new target to the specified targets
6465
REQUIRED_BY
6566
# Add a dependency to the new target on the specified targets
@@ -234,6 +235,13 @@ function(slang_add_target dir type)
234235
PUBLIC "$<BUILD_INTERFACE:${inc_abs}>"
235236
)
236237
endforeach()
238+
foreach(inc ${ARG_INCLUDE_DIRECTORIES_PRIVATE})
239+
get_filename_component(inc_abs ${inc} ABSOLUTE)
240+
target_include_directories(
241+
${target}
242+
PRIVATE "$<BUILD_INTERFACE:${inc_abs}>"
243+
)
244+
endforeach()
237245

238246
#
239247
# Set up export macros

slang-tag-version.h

-1
This file was deleted.

slang-tag-version.h.in

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#define SLANG_TAG_VERSION "@SLANG_VERSION_FULL@"

source/slang/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ target_include_directories(
249249
#
250250
# Slang itself
251251
#
252+
configure_file(${slang_SOURCE_DIR}/slang-tag-version.h.in slang-tag-version.h)
252253
slang_add_target(
253254
.
254255
${SLANG_LIB_TYPE}
@@ -266,6 +267,7 @@ slang_add_target(
266267
# slang.h is in the project root, so include that directory in the interface
267268
# for slang
268269
INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR}
270+
INCLUDE_DIRECTORIES_PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
269271
EXPORT_MACRO_PREFIX SLANG
270272
INSTALL
271273
PUBLIC_HEADERS ${slang_SOURCE_DIR}/slang*.h

source/slang/slang.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747

4848
#include "slang-check-impl.h"
4949

50-
#include "../../slang-tag-version.h"
50+
#include "slang-tag-version.h"
5151

5252
#include <sys/stat.h>
5353

0 commit comments

Comments
 (0)