@@ -25,16 +25,37 @@ if(NOT DEFINED PROJECT_VERSION)
2525endif ()
2626
2727# Remove the 'v' prefix if it exists and extract the major, minor, and patch versions
28- string (REGEX MATCH "^[vV]?([0-9]+\\ .[0-9]+\\ .[0-9]+)" _ ${PROJECT_VERSION} )
29- set (PROJECT_VERSION_BASE ${CMAKE_MATCH_1} )
28+ # The pre-release part (if present) should be captured without the '-'
29+ string (REGEX MATCH "^[vV]?([0-9]+)\\ .([0-9]+)\\ .([0-9]+)(-([a-zA-Z0-9]+))?$" MATCH_RESULT "${PROJECT_VERSION} " )
30+ if (NOT MATCH_RESULT)
31+ message (FATAL_ERROR "Invalid PROJECT_VERSION format. Expected format: x.y.z or x.y.z-pre" )
32+ endif ()
33+
34+ set (PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1} )
35+ set (PROJECT_VERSION_MINOR ${CMAKE_MATCH_2} )
36+ set (PROJECT_VERSION_PATCH ${CMAKE_MATCH_3} )
37+ set (PROJECT_VERSION_PRERELEASE ${CMAKE_MATCH_5} )
38+ if (PROJECT_VERSION_PRERELEASE)
39+ set (CPACK_PACKAGE_VERSION "${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR} .${PROJECT_VERSION_PATCH} -${PROJECT_VERSION_PRERELEASE} " )
40+ else ()
41+ set (CPACK_PACKAGE_VERSION "${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR} .${PROJECT_VERSION_PATCH} " )
42+ endif ()
3043
31- # Use PROJECT_VERSION directly for CPack
32- set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION} )
44+ project (capstone VERSION "${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR} .${PROJECT_VERSION_PATCH} " )
45+
46+ # Overwrite the version header file
47+ configure_file (
48+ "${CMAKE_SOURCE_DIR} /version.h.in"
49+ "${CMAKE_SOURCE_DIR} /include/capstone/version.h"
50+ @ONLY
51+ )
3352
34- # Set the project version without the pre-release identifier
35- project (capstone VERSION ${PROJECT_VERSION_BASE} )
36- # Print the values of PROJECT_VERSION and PROJECT_VERSION_BASE
37- message (STATUS "PROJECT_VERSION: ${CPACK_PACKAGE_VERSION} CAPSTONE_VERSION: ${PROJECT_VERSION_BASE} " )
53+ # Overwrite the pkgconfig.mk file
54+ # configure_file(
55+ # "${CMAKE_SOURCE_DIR}/pkgconfig.mk.in"
56+ # "${CMAKE_SOURCE_DIR}/pkgconfig.mk"
57+ # @ONLY
58+ # )
3859
3960set (UNIX_COMPILER_OPTIONS -Werror -Wall -Warray-bounds -Wshift-negative-value -Wreturn-type -Wformat -Wmissing-braces -Wunused-function -Warray-bounds -Wunused-variable -Wparentheses -Wint-in-bool -context -Wmisleading-indentation)
4061
0 commit comments