diff --git a/CMakeLists.txt b/CMakeLists.txt index 78b54dbe..575f9f29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,14 @@ cmake_minimum_required(VERSION 3.25) +set(KVAZAAR_VERSION_MAJOR 2) +set(KVAZAAR_VERSION_MINOR 3) +set(KVAZAAR_VERSION_REVISION 2) + project(kvazaar LANGUAGES C CXX HOMEPAGE_URL https://github.com/ultravideo/kvazaar DESCRIPTION "An open-source HEVC encoder licensed under 3-clause BSD" -VERSION 2.3.2 ) +VERSION ${KVAZAAR_VERSION_MAJOR}.${KVAZAAR_VERSION_MINOR}.${KVAZAAR_VERSION_REVISION}) option(BUILD_SHARED_LIBS "Build using shared kvazaar library" ON) @@ -91,8 +95,10 @@ if(MSVC) set(KVZ_COMPILER_VERSION "VS2017") elseif(MSVC_VERSION LESS 1930) set(KVZ_COMPILER_VERSION "VS2019") - else() + elseif(MSVC_VERSION LESS 1950) set(KVZ_COMPILER_VERSION "VS2022") + else() + set(KVZ_COMPILER_VERSION "VS2026") endif() endif() @@ -201,6 +207,10 @@ else() endif() +target_compile_definitions(kvazaar PUBLIC KVZ_VERSION_MAJOR=${KVAZAAR_VERSION_MAJOR}) +target_compile_definitions(kvazaar PUBLIC KVZ_VERSION_MINOR=${KVAZAAR_VERSION_MINOR}) +target_compile_definitions(kvazaar PUBLIC KVZ_VERSION_REVISION=${KVAZAAR_VERSION_REVISION}) + target_include_directories(kvazaar PUBLIC src) target_include_directories(kvazaar PUBLIC src/extras) target_include_directories(kvazaar PUBLIC src/strategies) @@ -249,7 +259,7 @@ else() if(BUILD_KVAZAAR_BINARY) set_target_properties(kvazaar-bin PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src) endif() - set_target_properties(kvazaar PROPERTIES SOVERSION "7" VERSION "7.4.0") + set_target_properties(kvazaar PROPERTIES SOVERSION "7" VERSION "7.6.0") if(${CMAKE_SYSTEM_PROCESSOR} IN_LIST ALLOW_AVX2) set_property( SOURCE ${LIB_SOURCES_STRATEGIES_AVX2} APPEND PROPERTY COMPILE_FLAGS "-mavx2 -mbmi -mpopcnt -mlzcnt -mbmi2" ) set_property( SOURCE ${LIB_SOURCES_STRATEGIES_SSE41} APPEND PROPERTY COMPILE_FLAGS "-msse4.1" ) diff --git a/build/kvazaar_lib/kvazaar_lib.vcxproj b/build/kvazaar_lib/kvazaar_lib.vcxproj index a6fd27a1..13d32e55 100644 --- a/build/kvazaar_lib/kvazaar_lib.vcxproj +++ b/build/kvazaar_lib/kvazaar_lib.vcxproj @@ -80,6 +80,9 @@ + + KVZ_VERSION_MAJOR=2;KVZ_VERSION_MINOR=3;KVZ_VERSION_REVISION=2;KVZ_COMPILER_STRING="VS2015";KVZ_COMPILE_DATE="2026-01-20";%(PreprocessorDefinitions) + @@ -91,6 +94,7 @@ + KVZ_VERSION_MAJOR=2;KVZ_VERSION_MINOR=3;KVZ_VERSION_REVISION=2;KVZ_COMPILER_STRING="VS2015";KVZ_COMPILE_DATE="2026-01-20";%(PreprocessorDefinitions) @@ -103,6 +107,7 @@ + KVZ_VERSION_MAJOR=2;KVZ_VERSION_MINOR=3;KVZ_VERSION_REVISION=2;KVZ_COMPILER_STRING="VS2015";KVZ_COMPILE_DATE="2026-01-20";%(PreprocessorDefinitions) @@ -115,6 +120,7 @@ + KVZ_VERSION_MAJOR=2;KVZ_VERSION_MINOR=3;KVZ_VERSION_REVISION=2;KVZ_COMPILER_STRING="VS2015";KVZ_COMPILE_DATE="2026-01-20";%(PreprocessorDefinitions) diff --git a/configure.ac b/configure.ac index e8b3eee4..f180f456 100644 --- a/configure.ac +++ b/configure.ac @@ -23,9 +23,13 @@ AC_CONFIG_SRCDIR([src/encmain.c]) # # Here is a somewhat sane guide to lib versioning: http://apr.apache.org/versioning.html ver_major=7 -ver_minor=5 +ver_minor=6 ver_release=0 +kvz_pjt_ver_major=2 +kvz_pjt_ver_minor=3 +kvz_pjt_ver_revision=2 + # Prevents configure from adding a lot of defines to the CFLAGS AC_CONFIG_HEADERS([config.h]) @@ -75,6 +79,8 @@ AM_CONDITIONAL([HAVE_SSE2], [test x"$flag_sse2" = x"true"]) KVZ_CFLAGS="-Wall -Wextra -Wvla -Wno-sign-compare -Wno-unused-parameter -I$srcdir/src -I$srcdir/src/extras -ftree-vectorize -fvisibility=hidden" CFLAGS="$KVZ_CFLAGS $CFLAGS" +CFLAGS="-DKVZ_VERSION_MAJOR=$kvz_pjt_ver_major -DKVZ_VERSION_MINOR=$kvz_pjt_ver_minor -DKVZ_VERSION_REVISION=$kvz_pjt_ver_revision $CFLAGS" + AC_SEARCH_LIBS([log], [m c], [], [exit 1]) AC_SEARCH_LIBS([pow], [m c], [], [exit 1]) @@ -103,7 +109,6 @@ LIBS="$LIBS $cryptopp_LIBS" CPPFLAGS="-DKVZ_DLL_EXPORTS $CPPFLAGS" - # We need to force AX_PTHREAD to check -pthread -lpthread since otherwise # it only outputs -pthread for GCC. Without -lpthread GCC does not link the # shared library against the pthread library (even though it does link the @@ -118,6 +123,14 @@ CFLAGS="$PTHREAD_CFLAGS $CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CC="$PTHREAD_CC" +compiler_name=`basename $CC` +escaped_compiler_name='\"'$compiler_name'\"' +CFLAGS="-DKVZ_COMPILER_STRING=$escaped_compiler_name $CFLAGS" + +compile_date=`date -u +"%Y-%m-%d"` +escaped_compile_date='\"'$compile_date'\"' +CFLAGS="-DKVZ_COMPILE_DATE=$escaped_compile_date $CFLAGS" + # --enable-werror AC_ARG_ENABLE([werror], [AS_HELP_STRING([--enable-werror], [treat warnings as errors [no]])], [CFLAGS="-Werror $CFLAGS"], [] diff --git a/src/cli.c b/src/cli.c index edffcca4..72cfb59f 100644 --- a/src/cli.c +++ b/src/cli.c @@ -394,12 +394,9 @@ void print_usage(void) void print_version(void) { fprintf(stdout, -#ifdef CMAKE_BUILD - "kvazaar " VERSION_STRING " [" KVZ_COMPILER_STRING "] " KVZ_COMPILE_DATE "\n"); -#else - "Kvazaar " VERSION_STRING "\n" - "Kvazaar license: 3-clause BSD\n"); -#endif + "Kvazaar %s [%s] %s\n" + "Kvazaar license: 3-clause BSD\n", + kvz_get_version_string(), kvz_get_compiler_string(), kvz_get_compile_date_string()); } diff --git a/src/kvazaar.c b/src/kvazaar.c index 14c19d81..11c78457 100644 --- a/src/kvazaar.c +++ b/src/kvazaar.c @@ -416,3 +416,39 @@ const kvz_api * kvz_api_get(int bit_depth) { return &kvz_8bit_api; } + + +const char * kvz_get_version_string() +{ + return VERSION_STRING; +} + + +int kvz_get_version_major() +{ + return KVZ_VERSION_MAJOR; +} + + +int kvz_get_version_minor() +{ + return KVZ_VERSION_MINOR; +} + + +int kvz_get_version_revision() +{ + return KVZ_VERSION_REVISION; +} + + +const char * kvz_get_compiler_string() +{ + return KVZ_COMPILER_STRING; +} + + +const char * kvz_get_compile_date_string() +{ + return KVZ_COMPILE_DATE; +} diff --git a/src/kvazaar.h b/src/kvazaar.h index f3f1c6ad..b0c32517 100644 --- a/src/kvazaar.h +++ b/src/kvazaar.h @@ -828,6 +828,48 @@ typedef struct kvz_api { KVZ_PUBLIC const kvz_api * kvz_api_get(int bit_depth); + +/** + * \brief Return version string + * + * Returns version string in format MAJOR.MINOR.REVISION + * + */ +KVZ_PUBLIC const char * kvz_get_version_string(); + + +/** + * \brief Return major version number + */ +KVZ_PUBLIC int kvz_get_version_major(); + + +/** + * \brief Return minor version number + */ +KVZ_PUBLIC int kvz_get_version_minor(); + + +/** + * \brief Return revision version number + */ +KVZ_PUBLIC int kvz_get_version_revision(); + + +/** + * \brief Return compiler name string + * + */ +KVZ_PUBLIC const char * kvz_get_compiler_string(); + + +/** + * \brief Return compile date string + * + */ +KVZ_PUBLIC const char * kvz_get_compile_date_string(); + + #ifdef __cplusplus } #endif