Advance Wayland and KDE package bring-up

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-14 10:51:06 +01:00
parent 51f3c21121
commit cf12defd28
15214 changed files with 20594243 additions and 269 deletions
@@ -0,0 +1,47 @@
macro(add_version_test NAME COMMAND)
string(REPLACE "." "/" dir "${NAME}")
string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}")
add_test(ecm_setup_version-${NAME} ${CMAKE_CTEST_COMMAND}
--build-and-test
"${CMAKE_CURRENT_SOURCE_DIR}/${dir}"
"${CMAKE_CURRENT_BINARY_DIR}/${dir}"
--build-two-config
--build-generator ${CMAKE_GENERATOR}
--build-makeprogram ${CMAKE_MAKE_PROGRAM}
--build-project ${proj}
${${NAME}_EXTRA_OPTIONS}
--test-command ${COMMAND} ${ARGN})
endmacro()
add_version_test(old_simple dummy)
add_version_test(old_simple_no_version_string_vars dummy)
add_version_test(old_soversion dummy)
add_version_test(old_version_file dummy)
add_version_test(old_version_file_abspath dummy)
add_version_test(old_version_file_anynewer dummy)
add_version_test(old_version_file_exact dummy)
add_version_test(old_version_file_samemajor dummy)
add_version_test(old_header check_header)
add_version_test(old_header_abspath check_header)
if(CMAKE_MAJOR_VERSION GREATER 2)
add_version_test(new_explicit_header check_header)
add_version_test(new_explicit_header_abspath check_header)
add_version_test(new_explicit_simple dummy)
add_version_test(new_explicit_simple_no_version_string_vars dummy)
add_version_test(new_explicit_soversion dummy)
add_version_test(new_explicit_version_file dummy)
add_version_test(new_explicit_version_file_abspath dummy)
add_version_test(new_project_header check_header)
add_version_test(new_project_header_abspath check_header)
add_version_test(new_project_header_prefix check_header)
add_version_test(new_project_header_zero_prefixed_version check_header)
add_version_test(new_project_header_expected_zero_version check_header)
add_version_test(new_project_simple dummy)
add_version_test(new_project_simple_no_version_string_vars dummy)
add_version_test(new_project_simple_prefix dummy)
add_version_test(new_project_soversion dummy)
add_version_test(new_project_soversion_prefix dummy)
add_version_test(new_project_version_file dummy)
add_version_test(new_project_version_file_abspath dummy)
endif()
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_explicit_header VERSION 1.5.6.7)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
VERSION_HEADER "ecm_new_explicit_header_version.h"
)
include(../version_helpers.cmake)
project_version_var_checks(1.5.6.7)
version_var_checks(Foo 2.3.4)
assert_var_num_value(Foo_SOVERSION 2)
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
@@ -0,0 +1,24 @@
#include <ecm_new_explicit_header_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(Foo_VERSION_MAJOR,2)
intcheck(Foo_VERSION_MINOR,3)
intcheck(Foo_VERSION_PATCH,4)
intcheck(Foo_VERSION,((2 << 16) + (3 << 8) + 4))
strcheck(Foo_VERSION_STRING,"2.3.4")
return 0;
}
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_explicit_header_abspath VERSION 1.5.6.7)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/../ecm_new_explicit_header_abspath_version.h"
)
include(../version_helpers.cmake)
project_version_var_checks(1.5.6.7)
version_var_checks(Foo 2.3.4)
assert_var_num_value(Foo_SOVERSION 2)
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/..")
@@ -0,0 +1,24 @@
#include <ecm_new_explicit_header_abspath_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(Foo_VERSION_MAJOR,2)
intcheck(Foo_VERSION_MINOR,3)
intcheck(Foo_VERSION_PATCH,4)
intcheck(Foo_VERSION,((2 << 16) + (3 << 8) + 4))
strcheck(Foo_VERSION_STRING,"2.3.4")
return 0;
}
@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_explicit_simple VERSION 1.5.6.7)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4 VARIABLE_PREFIX Foo)
include(../version_helpers.cmake)
project_version_var_checks(1.5.6.7)
version_var_checks(Foo 2.3.4)
assert_var_num_value(Foo_SOVERSION 2)
add_executable(dummy main.c)
@@ -0,0 +1,4 @@
int main()
{
return 0;
}
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_explicit_simple VERSION 1.5.6.7)
# trigger *_VERSION_STRING vars no longer being set
set(ECM_GLOBAL_FIND_VERSION 5.83)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4 VARIABLE_PREFIX Foo)
include(../version_helpers.cmake)
project_version_var_checks(1.5.6.7)
version_var_checks(Foo 2.3.4)
assert_var_num_value(Foo_SOVERSION 2)
add_executable(dummy main.c)
@@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_explicit_soversion VERSION 1.5.6.7)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
SOVERSION 1
)
include(../version_helpers.cmake)
project_version_var_checks(1.5.6.7)
version_var_checks(Foo 2.3.4)
assert_var_num_value(Foo_SOVERSION 1)
add_executable(dummy main.c)
@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_explicit_version_file VERSION 1.5.6.7)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
PACKAGE_VERSION_FILE FooVersion.cmake
)
include(../version_helpers.cmake)
project_version_var_checks(1.5.6.7)
version_var_checks(Foo 2.3.4)
assert_var_num_value(Foo_SOVERSION 2)
AnyNewer_2_3_4_checks("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake")
add_executable(dummy main.c)
@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_explicit_version_abspath VERSION 1.5.6.7)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/../NewExplicitVersionAbsPath.cmake"
)
include(../version_helpers.cmake)
project_version_var_checks(1.5.6.7)
version_var_checks(Foo 2.3.4)
assert_var_num_value(Foo_SOVERSION 2)
AnyNewer_2_3_4_checks("${CMAKE_CURRENT_BINARY_DIR}/../NewExplicitVersionAbsPath.cmake")
add_executable(dummy main.c)
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_header VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
VERSION_HEADER "ecm_new_project_header_version.h"
)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_header 2.3.4)
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
@@ -0,0 +1,24 @@
#include <ecm_new_project_header_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(new_project_header_VERSION_MAJOR,2)
intcheck(new_project_header_VERSION_MINOR,3)
intcheck(new_project_header_VERSION_PATCH,4)
intcheck(new_project_header_VERSION,((2 << 16) + (3 << 8) + 4))
strcheck(new_project_header_VERSION_STRING,"2.3.4")
return 0;
}
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_header_abspath VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/../ecm_new_project_header_abspath_version.h"
)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_header_abspath 2.3.4)
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/..")
@@ -0,0 +1,24 @@
#include <ecm_new_project_header_abspath_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(new_project_header_abspath_VERSION_MAJOR,2)
intcheck(new_project_header_abspath_VERSION_MINOR,3)
intcheck(new_project_header_abspath_VERSION_PATCH,4)
intcheck(new_project_header_abspath_VERSION,((2 << 16) + (3 << 8) + 4))
strcheck(new_project_header_abspath_VERSION_STRING,"2.3.4")
return 0;
}
@@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.16.0)
project(new_project_header_expected_zero_version VERSION "08.00.0")
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
VERSION_HEADER "new_project_header_expected_zero_version.h"
)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_header_expected_zero_version "08.00.0")
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
@@ -0,0 +1,24 @@
#include <new_project_header_expected_zero_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(new_project_header_expected_zero_version_VERSION_MAJOR,8)
intcheck(new_project_header_expected_zero_version_VERSION_MINOR,0)
intcheck(new_project_header_expected_zero_version_VERSION_PATCH,0)
intcheck(new_project_header_expected_zero_version_VERSION,((8 << 16) + (0 << 8) + 0))
strcheck(new_project_header_expected_zero_version_VERSION_STRING,"08.00.0")
return 0;
}
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_header_prefix VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
VARIABLE_PREFIX Foo
VERSION_HEADER "ecm_new_project_header_version.h"
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
@@ -0,0 +1,24 @@
#include <ecm_new_project_header_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(Foo_VERSION_MAJOR,2)
intcheck(Foo_VERSION_MINOR,3)
intcheck(Foo_VERSION_PATCH,4)
intcheck(Foo_VERSION,((2 << 16) + (3 << 8) + 4))
strcheck(Foo_VERSION_STRING,"2.3.4")
return 0;
}
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.16.0)
project(new_project_header_zero_prefixed_version VERSION "08.09.07")
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
VERSION_HEADER "new_project_header_zero_prefixed_version.h"
)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_header_zero_prefixed_version "08.09.07")
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
@@ -0,0 +1,24 @@
#include <new_project_header_zero_prefixed_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(new_project_header_zero_prefixed_version_VERSION_MAJOR,8)
intcheck(new_project_header_zero_prefixed_version_VERSION_MINOR,9)
intcheck(new_project_header_zero_prefixed_version_VERSION_PATCH,7)
intcheck(new_project_header_zero_prefixed_version_VERSION,((8 << 16) + (9 << 8) + 7))
strcheck(new_project_header_zero_prefixed_version_VERSION_STRING,"08.09.07")
return 0;
}
@@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_simple VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_simple 2.3.4)
add_executable(dummy main.c)
@@ -0,0 +1,4 @@
int main()
{
return 0;
}
@@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_simple VERSION 2.3.4)
# trigger *_VERSION_STRING vars no longer being set
set(ECM_GLOBAL_FIND_VERSION 5.83)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_simple 2.3.4)
add_executable(dummy main.c)
@@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_simple_prefix VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT VARIABLE_PREFIX Foo)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
add_executable(dummy main.c)
@@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_soversion VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
SOVERSION 1
)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_soversion 2.3.4 1)
add_executable(dummy main.c)
@@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_soversion_prefix VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
VARIABLE_PREFIX Foo
SOVERSION 1
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4 1)
add_executable(dummy main.c)
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_version_file VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
PACKAGE_VERSION_FILE FooVersion.cmake
)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_version_file 2.3.4)
AnyNewer_2_3_4_checks("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake")
add_executable(dummy main.c)
@@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.0.0)
project(new_project_version_file_abspath VERSION 2.3.4)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(PROJECT
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/../NewProjectVersionAbsPath.cmake"
)
include(../version_helpers.cmake)
# NB: name comes from project() command
standard_version_var_checks(new_project_version_file_abspath 2.3.4)
AnyNewer_2_3_4_checks("${CMAKE_CURRENT_BINARY_DIR}/../NewProjectVersionAbsPath.cmake")
add_executable(dummy main.c)
@@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_header)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
VERSION_HEADER "ecm_old_header_version.h"
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
@@ -0,0 +1,24 @@
#include <ecm_old_header_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(Foo_VERSION_MAJOR,2)
intcheck(Foo_VERSION_MINOR,3)
intcheck(Foo_VERSION_PATCH,4)
intcheck(Foo_VERSION,((2 << 16) + (3 << 8) + 4))
strcheck(Foo_VERSION_STRING,"2.3.4")
return 0;
}
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_header_abspath)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/../ecm_old_header_abspath_version.h"
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
add_executable(check_header main.c)
target_include_directories(check_header PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/..")
@@ -0,0 +1,24 @@
#include <ecm_old_header_abspath_version.h>
#include <string.h>
#include <stdio.h>
#define intcheck(macro,val) \
if (macro != val) { \
printf(#macro " was %d instead of %d", macro, val); \
return 1; \
}
#define strcheck(macro,val) \
if (strcmp(macro,val) != 0) { \
printf(#macro " was %s instead of %s", macro, val); \
return 1; \
}
int main()
{
intcheck(Foo_VERSION_MAJOR,2)
intcheck(Foo_VERSION_MINOR,3)
intcheck(Foo_VERSION_PATCH,4)
intcheck(Foo_VERSION,((2 << 16) + (3 << 8) + 4))
strcheck(Foo_VERSION_STRING,"2.3.4")
return 0;
}
@@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_simple)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4 VARIABLE_PREFIX Foo)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
add_executable(dummy main.c)
@@ -0,0 +1,4 @@
int main()
{
return 0;
}
@@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_simple)
# trigger *_VERSION_STRING vars no longer being set
set(ECM_GLOBAL_FIND_VERSION 5.83)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4 VARIABLE_PREFIX Foo)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
add_executable(dummy main.c)
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_soversion)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
SOVERSION 1
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4 1)
add_executable(dummy main.c)
@@ -0,0 +1,4 @@
int main()
{
return 0;
}
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_version_file)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
PACKAGE_VERSION_FILE FooVersion.cmake
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
AnyNewer_2_3_4_checks("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake")
add_executable(dummy main.c)
@@ -0,0 +1,4 @@
int main()
{
return 0;
}
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_version_file_abspath)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/../OldVersionAbsPath.cmake"
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
AnyNewer_2_3_4_checks("${CMAKE_CURRENT_BINARY_DIR}/../OldVersionAbsPath.cmake")
add_executable(dummy main.c)
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_version_file_anynewer)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
PACKAGE_VERSION_FILE FooVersion.cmake COMPATIBILITY AnyNewerVersion
)
include(../version_helpers.cmake)
standard_version_var_checks(Foo 2.3.4)
AnyNewer_2_3_4_checks("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake")
add_executable(dummy main.c)
@@ -0,0 +1,54 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_version_file_exact)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
PACKAGE_VERSION_FILE FooVersion.cmake COMPATIBILITY ExactVersion
)
include(../../test_helpers.cmake)
include(../version_helpers.cmake)
macro(find_foo version)
test_version_file("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake" "${version}")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
endmacro()
standard_version_var_checks(Foo 2.3.4)
# too old - fails
find_foo("3.1.1")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# wrong major version - fails
find_foo("1.1.1")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# wrong minor - fails
find_foo("2.1.1")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# wrong patch - fails
find_foo("2.3.1")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# tweak doesn't matter (but prevents P_V_EXACT being set) - succeeds
find_foo("2.3.4.3")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# exact - succeeds
find_foo("2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT TRUE)
add_executable(dummy main.c)
@@ -0,0 +1,54 @@
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 OLD)
project(old_version_file_samemajor)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules)
include(ECMSetupVersion)
ecm_setup_version(2.3.4
VARIABLE_PREFIX Foo
PACKAGE_VERSION_FILE FooVersion.cmake COMPATIBILITY SameMajorVersion
)
include(../../test_helpers.cmake)
include(../version_helpers.cmake)
macro(find_foo version)
test_version_file("${CMAKE_CURRENT_BINARY_DIR}/FooVersion.cmake" "${version}")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
endmacro()
standard_version_var_checks(Foo 2.3.4)
# too old - fails
find_foo("3.1.1")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# wrong major version - fails
find_foo("1.1.1")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# correct major version, more recent - succeeds
find_foo("2.1.1")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# correct major version - succeeds
find_foo("2")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# correct major version, but too old - fails
find_foo("2.4.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# exact - succeeds
find_foo("2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT TRUE)
add_executable(dummy main.c)
@@ -0,0 +1,125 @@
include(../../test_helpers.cmake)
macro(test_version_file filename version)
unset(PACKAGE_VERSION)
unset(PACKAGE_VERSION_COMPATIBLE)
unset(PACKAGE_VERSION_EXACT)
set(PACKAGE_FIND_VERSION "${version}")
if(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)$")
set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}")
set(PACKAGE_FIND_VERSION_PATCH "${CMAKE_MATCH_3}")
set(PACKAGE_FIND_VERSION_TWEAK "${CMAKE_MATCH_4}")
set(PACKAGE_FIND_VERSION_COUNT 4)
elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)$")
set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}")
set(PACKAGE_FIND_VERSION_PATCH "${CMAKE_MATCH_3}")
set(PACKAGE_FIND_VERSION_TWEAK)
set(PACKAGE_FIND_VERSION_COUNT 3)
elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)$")
set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(PACKAGE_FIND_VERSION_MINOR "${CMAKE_MATCH_2}")
set(PACKAGE_FIND_VERSION_PATCH)
set(PACKAGE_FIND_VERSION_TWEAK)
set(PACKAGE_FIND_VERSION_COUNT 2)
elseif(PACKAGE_FIND_VERSION MATCHES "^([0-9]+)$")
set(PACKAGE_FIND_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(PACKAGE_FIND_VERSION_MINOR)
set(PACKAGE_FIND_VERSION_PATCH)
set(PACKAGE_FIND_VERSION_TWEAK)
set(PACKAGE_FIND_VERSION_COUNT 1)
elseif(PACKAGE_FIND_VERSION STREQUAL "")
set(PACKAGE_FIND_VERSION_MAJOR)
set(PACKAGE_FIND_VERSION_MINOR)
set(PACKAGE_FIND_VERSION_PATCH)
set(PACKAGE_FIND_VERSION_TWEAK)
set(PACKAGE_FIND_VERSION_COUNT 0)
else()
message(STATUS "Invalid version ${PACKAGE_FIND_VERSION}")
endif()
include("${filename}")
endmacro()
macro(version_var_checks prefix version)
assert_var_str_value(${prefix}_VERSION "${version}")
if(ECM_GLOBAL_FIND_VERSION VERSION_LESS 5.83.0)
assert_var_str_value(${prefix}_VERSION_STRING "${version}")
endif()
if("${version}" MATCHES "^([0-9]+)")
assert_var_num_value(${prefix}_VERSION_MAJOR ${CMAKE_MATCH_1})
endif()
if("${version}" MATCHES "^[0-9]+\\.([0-9]+)")
assert_var_num_value(${prefix}_VERSION_MINOR ${CMAKE_MATCH_1})
endif()
if("${version}" MATCHES "^[0-9]+\\.[0-9]+\\.([0-9]+)")
assert_var_num_value(${prefix}_VERSION_PATCH ${CMAKE_MATCH_1})
endif()
if("${version}" MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
assert_var_num_value(${prefix}_VERSION_TWEAK ${CMAKE_MATCH_1})
endif()
endmacro()
macro(project_version_var_checks version)
version_var_checks(PROJECT "${version}")
endmacro()
macro(standard_version_var_checks prefix version)
version_var_checks(PROJECT "${version}")
version_var_checks("${prefix}" "${version}")
if(${ARGC} GREATER 2)
assert_var_num_value(${prefix}_SOVERSION ${ARGV2})
elseif(DEFINED ${prefix}_VERSION_MAJOR AND NOT ${prefix}_VERSION_MAJOR STREQUAL "")
assert_var_num_value(${prefix}_SOVERSION "${${prefix}_VERSION_MAJOR}")
endif()
endmacro()
macro(AnyNewer_2_3_4_checks filename)
# too old - fails
test_version_file("${filename}" "3.1.1")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# too old - fails
test_version_file("${filename}" "3")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# too old - fails
test_version_file("${filename}" "2.3.4.1")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE FALSE ALLOW_UNDEFINED)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# newer - succeeds
test_version_file("${filename}" "1.1.1")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# newer - succeeds
test_version_file("${filename}" "2.1.1")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# newer - succeeds
test_version_file("${filename}" "2")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# unspecified - succeeds
test_version_file("${filename}" "")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT FALSE ALLOW_UNDEFINED)
# exact - succeeds
test_version_file("${filename}" "2.3.4")
assert_var_str_value(PACKAGE_VERSION "2.3.4")
assert_var_bool_value(PACKAGE_VERSION_COMPATIBLE TRUE)
assert_var_bool_value(PACKAGE_VERSION_EXACT TRUE)
endmacro()