Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow KTX_VERSION_FULL to be manually specified #922

Merged
merged 3 commits into from
Jul 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ add `-D BASISU_SUPPORT_OPENCL=ON` to the CMake configure command.
> There is very little advantage to using OpenCL in the context
> of `libktx`. It is disabled in the default build configuration.

> **Note:**
>
> When building from the `tar.gz` and not from the git repository directly, it is recommended to pass the variable `KTX_GIT_VERSION_FULL` with the associated git tag (e.g `v4.3.2`)
> ```bash
> cmake . -G Ninja -B build -DKTX_GIT_VERSION_FULL=v4.3.2
> ```

Building
--------
Expand Down
17 changes: 10 additions & 7 deletions cmake/version.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -108,16 +108,19 @@ function(generate_version _var )
set(${_var} "${KTX_VERSION}" PARENT_SCOPE)
endfunction()

# Get latest tag
git_describe_raw(KTX_VERSION_FULL --abbrev=0 --match v[0-9]*)
#message("KTX full version: ${KTX_VERSION_FULL}")
# Get latest tag from git if not passed to cmake
# This property can be passed to cmake when building from tar.gz
if(NOT KTX_GIT_VERSION_FULL)
git_describe_raw(KTX_GIT_VERSION_FULL --abbrev=0 --match v[0-9]*)
endif()
#message("KTX git full version: ${KTX_GIT_VERSION_FULL}")

# generate_version(TOKTX_VERSION tools/toktx)
# message("TOKTX_VERSION: ${TOKTX_VERSION}")

# First try a full regex ( vMAJOR.MINOR.PATCH-TWEAK )
string(REGEX MATCH "^v([0-9]*)\.([0-9]*)\.([0-9]*)(-[^\.]*)"
KTX_VERSION ${KTX_VERSION_FULL})
KTX_VERSION ${KTX_GIT_VERSION_FULL})

if(KTX_VERSION)
set(KTX_VERSION_MAJOR ${CMAKE_MATCH_1})
Expand All @@ -127,7 +130,7 @@ if(KTX_VERSION)
else()
# If full regex failed, go for vMAJOR.MINOR.PATCH
string(REGEX MATCH "^v([0-9]*)\.([0-9]*)\.([^\.]*)"
KTX_VERSION ${KTX_VERSION_FULL})
KTX_VERSION ${KTX_GIT_VERSION_FULL})

if(KTX_VERSION)
set(KTX_VERSION_MAJOR ${CMAKE_MATCH_1})
Expand Down Expand Up @@ -174,15 +177,15 @@ function( create_version_header dest_path target )
add_custom_command(
OUTPUT ${version_h_output}
# On Windows this command has to be invoked by a shell in order to work
COMMAND ${BASH_EXECUTABLE} -c "\"scripts/mkversion\" \"-o\" \"version.h\" \"${dest_path}\""
COMMAND ${BASH_EXECUTABLE} -c "\"scripts/mkversion\" \"-v\" \"${KTX_GIT_VERSION_FULL}\" \"-o\" \"version.h\" \"${dest_path}\""
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Generate ${version_h_output}"
VERBATIM
)
else()
add_custom_command(
OUTPUT ${version_h_output}
COMMAND scripts/mkversion -o version.h ${dest_path}
COMMAND scripts/mkversion -v ${KTX_GIT_VERSION_FULL} -o version.h ${dest_path}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Generate ${version_h_output}"
VERBATIM
Expand Down
10 changes: 7 additions & 3 deletions scripts/mkversion
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,10 @@ function setfile() {

# Figure out the object name and write its version file.
function writeversion() {
genversion $1
# Extract version from git if it is not passed via command line
if [-z "$VN"]; then
genversion $1
fi
local vfp;
if [ -z "$1" ]; then
vfp=$VF
Expand All @@ -107,14 +110,14 @@ function writeversion() {
}

function usage() {
echo "Usage: $0 [-a] [-f] [-n] [-o <outfile>] [<object>]"
echo "Usage: $0 [-a] [-f] [-n] [-v version] [-o <outfile>] [<object>]"
exit 1
}

force=0
dry_run=0
write_all=0;
args=$(getopt afno: $*)
args=$(getopt afnv:o: $*)

set -- $args
for i; do
Expand All @@ -125,6 +128,7 @@ for i; do
shift;;
-n) dry_run=1;
shift;;
-v) VN=$2; shift; shift;;
-o) VF=$2; shift; shift;;
--) shift; break;;
esac
Expand Down
Loading