diff options
| -rw-r--r-- | CMakeLists.txt | 5 | ||||
| -rw-r--r-- | cmake/GitVersion.cmake | 18 | ||||
| -rw-r--r-- | cmake/SlangTarget.cmake | 8 | ||||
| -rw-r--r-- | slang-tag-version.h | 1 | ||||
| -rw-r--r-- | slang-tag-version.h.in | 1 | ||||
| -rw-r--r-- | source/slang/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | source/slang/slang.cpp | 2 |
7 files changed, 27 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 70e204e7e..f16f31fbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,12 +4,13 @@ cmake_minimum_required(VERSION 3.25) # from git describe list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") include(GitVersion) -get_git_version(SLANG_VERSION "${CMAKE_CURRENT_LIST_DIR}") +get_git_version(SLANG_VERSION_NUMERIC SLANG_VERSION_FULL "${CMAKE_CURRENT_LIST_DIR}") # # Our project # -project(slang VERSION "${SLANG_VERSION}" LANGUAGES) +project(slang VERSION "${SLANG_VERSION_NUMERIC}" LANGUAGES) +set(PROJECT_VERSION "${SLANG_VERSION_FULL}") # # Global CMake options diff --git a/cmake/GitVersion.cmake b/cmake/GitVersion.cmake index 7044aaffc..386ca309c 100644 --- a/cmake/GitVersion.cmake +++ b/cmake/GitVersion.cmake @@ -1,16 +1,16 @@ find_package(Git) # Extract a version from the latest tag matching something like v1.2.3.4 -function(get_git_version var dir) +function(get_git_version var_numeric var dir) if(NOT DEFINED ${var}) - set(version "0.0") + set(version_numeric "0.0.0") + set(version "0.0.0-unknown") if(GIT_EXECUTABLE) set(command "${GIT_EXECUTABLE}" -C "${dir}" describe - --abbrev=0 --tags --match v* @@ -19,19 +19,20 @@ function(get_git_version var dir) COMMAND ${command} RESULT_VARIABLE result OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE version + OUTPUT_VARIABLE version_out ) if(NOT result EQUAL 0) message( WARNING "Getting ${var} failed: ${command} returned ${result}" ) - elseif("${version}" MATCHES "^v([0-9]+(\.[0-9]+)*).*") + elseif("${version_out}" MATCHES "^v(([0-9]+(\\.[0-9]+)*).*)") set(version "${CMAKE_MATCH_1}") + set(version_numeric "${CMAKE_MATCH_2}") else() message( WARNING - "Couldn't parse numeric version (like v1.2.3) from ${version}" + "Couldn't parse version (like v1.2.3 or v1.2.3-foo) from ${version_out}" ) endif() else() @@ -42,6 +43,11 @@ function(get_git_version var dir) endif() endif() + set(${var_numeric} + ${version_numeric} + CACHE STRING + "The project version numeric part, detected using git if available" + ) set(${var} ${version} CACHE STRING diff --git a/cmake/SlangTarget.cmake b/cmake/SlangTarget.cmake index fdf3458cf..07409a960 100644 --- a/cmake/SlangTarget.cmake +++ b/cmake/SlangTarget.cmake @@ -60,6 +60,7 @@ function(slang_add_target dir type) INCLUDE_FROM_PRIVATE # Any include directories other targets need to use this target INCLUDE_DIRECTORIES_PUBLIC + INCLUDE_DIRECTORIES_PRIVATE # Add a dependency on the new target to the specified targets REQUIRED_BY # Add a dependency to the new target on the specified targets @@ -234,6 +235,13 @@ function(slang_add_target dir type) PUBLIC "$<BUILD_INTERFACE:${inc_abs}>" ) endforeach() + foreach(inc ${ARG_INCLUDE_DIRECTORIES_PRIVATE}) + get_filename_component(inc_abs ${inc} ABSOLUTE) + target_include_directories( + ${target} + PRIVATE "$<BUILD_INTERFACE:${inc_abs}>" + ) + endforeach() # # Set up export macros diff --git a/slang-tag-version.h b/slang-tag-version.h deleted file mode 100644 index f2ecc1d4f..000000000 --- a/slang-tag-version.h +++ /dev/null @@ -1 +0,0 @@ -#define SLANG_TAG_VERSION "unknown" diff --git a/slang-tag-version.h.in b/slang-tag-version.h.in new file mode 100644 index 000000000..d390d3fdb --- /dev/null +++ b/slang-tag-version.h.in @@ -0,0 +1 @@ +#define SLANG_TAG_VERSION "@SLANG_VERSION_FULL@" diff --git a/source/slang/CMakeLists.txt b/source/slang/CMakeLists.txt index d708bde1e..495a05f36 100644 --- a/source/slang/CMakeLists.txt +++ b/source/slang/CMakeLists.txt @@ -249,6 +249,7 @@ target_include_directories( # # Slang itself # +configure_file(${slang_SOURCE_DIR}/slang-tag-version.h.in slang-tag-version.h) slang_add_target( . ${SLANG_LIB_TYPE} @@ -266,6 +267,7 @@ slang_add_target( # slang.h is in the project root, so include that directory in the interface # for slang INCLUDE_DIRECTORIES_PUBLIC ${slang_SOURCE_DIR} + INCLUDE_DIRECTORIES_PRIVATE ${CMAKE_CURRENT_BINARY_DIR} EXPORT_MACRO_PREFIX SLANG INSTALL PUBLIC_HEADERS ${slang_SOURCE_DIR}/slang*.h diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index d601dcd0e..6b7e2a254 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -47,7 +47,7 @@ #include "slang-check-impl.h" -#include "../../slang-tag-version.h" +#include "slang-tag-version.h" #include <sys/stat.h> |
