Skip to content
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
2 changes: 1 addition & 1 deletion .github/workflows/examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
workflow_dispatch:

env:
CMLIB_VERSION: 1.2.0
CMLIB_VERSION: 1.3.1

jobs:
examples-linux:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
workflow_dispatch:

env:
CMLIB_VERSION: 1.2.0
CMLIB_VERSION: 1.3.1

jobs:
test_linux:
Expand Down
23 changes: 20 additions & 3 deletions system_modules/CMDEF_ENV.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,14 @@ ENDFUNCTION()
# )
#
MACRO(_CMDEF_ENV_SET_OS)
SET(_system_name)
IF(NOT DEFINED CMAKE_SYSTEM_NAME)
MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_NAME is not defined!")
CMAKE_HOST_SYSTEM_INFORMATION(RESULT _system_name QUERY OS_NAME)
ELSE()
SET(_system_name "${CMAKE_SYSTEM_NAME}")
ENDIF()

SET(_os_name "${CMAKE_SYSTEM_NAME}")
SET(_os_name "${_system_name}")
MESSAGE(STATUS "System name: ${_os_name}")
SET(os_name "")
IF("${_os_name}" STREQUAL "Darwin" OR
Expand Down Expand Up @@ -433,7 +436,21 @@ FUNCTION(_CMDEF_ENV_GET_ARCH arch)
RETURN()
ENDIF()
IF(CMDEF_OS_LINUX)
SET(_arch "${CMAKE_SYSTEM_PROCESSOR}")
SET(_arch)
IF(DEFINED CMAKE_SYSTEM_PROCESSOR)
SET(_arch "${CMAKE_SYSTEM_PROCESSOR}")
ELSE()
FIND_PROGRAM(uname_exe uname NO_CACHE REQUIRED)
EXECUTE_PROCESS(
COMMAND ${uname_exe} -m
OUTPUT_VARIABLE _arch
RESULT_VARIABLE result
)
STRING(REGEX REPLACE "\n" "" _arch "${_arch}")
IF(NOT result EQUAL 0)
MESSAGE(FATAL_ERROR "Cannot determine system architecture. uname -m failed")
ENDIF()
ENDIF()
STRING(REGEX REPLACE "[^a-zA-Z0-9.]" "-" _arch_mapped "${_arch}")
STRING(TOLOWER "${_arch_mapped}" _arch_normalized)
IF(NOT _arch_normalized)
Expand Down
18 changes: 18 additions & 0 deletions test/CMDEF_ENV/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,24 @@ TEST_RUN("${CMAKE_CURRENT_LIST_DIR}/os_detection")
TEST_RUN("${CMAKE_CURRENT_LIST_DIR}/arch_detection")
TEST_RUN("${CMAKE_CURRENT_LIST_DIR}/cache_variables_validation")

EXECUTE_PROCESS(
COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/os_detection/CMakeLists.txt"
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/os_detection"
RESULT_VARIABLE result_var
)
IF(NOT result_var EQUAL 0)
MESSAGE(FATAL_ERROR "os_detection test did not pass in script mode!")
ENDIF()

EXECUTE_PROCESS(
COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_LIST_DIR}/arch_detection/CMakeLists.txt"
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/arch_detection"
RESULT_VARIABLE result_var
)
IF(NOT result_var EQUAL 0)
MESSAGE(FATAL_ERROR "arch_detection test did not pass in script mode!")
ENDIF()

IF(CMDEF_OS_WINDOWS)
TEST_RUN("${CMAKE_CURRENT_LIST_DIR}/windows_specific")
ELSEIF(CMDEF_OS_POSIX)
Expand Down
6 changes: 4 additions & 2 deletions test/CMDEF_ENV/arch_detection/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
# Test architecture detection in CMDEF_ENV
#

CMAKE_MINIMUM_REQUIRED(VERSION 3.22)
PROJECT(CMDEF_ENV_ARCH_DETECTION_TEST)
IF(NOT DEFINED CMAKE_SCRIPT_MODE_FILE)
CMAKE_MINIMUM_REQUIRED(VERSION 3.22)
PROJECT(CMDEF_ENV_ARCH_DETECTION_TEST)
ENDIF()

FIND_PACKAGE(CMLIB REQUIRED)

Expand Down
41 changes: 11 additions & 30 deletions test/CMDEF_ENV/cache_variables_validation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
# are properly set with expected values for each supported platform (Linux, macOS, Windows).
# Also tests environment variable support.
#
# It tests only variables which are shared across all platforms.
#

CMAKE_MINIMUM_REQUIRED(VERSION 3.22)
PROJECT(CMDEF_ENV_CACHE_VARIABLES_TEST)
Expand All @@ -26,12 +28,6 @@ INCLUDE("${CMAKE_CURRENT_LIST_DIR}/../../../system_modules/CMDEF_ENV.cmake")
# <function>()
#
FUNCTION(TEST_LINUX_CACHE_VARIABLES)
IF(NOT CMDEF_OS_LINUX)
MESSAGE(STATUS "Skipping Linux cache variables test - not running on Linux")
RETURN()
ENDIF()

MESSAGE(STATUS "Testing CMDEF_ENV cache variables for Linux platform")

# OS Detection Variables
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME "linux")
Expand All @@ -42,9 +38,7 @@ FUNCTION(TEST_LINUX_CACHE_VARIABLES)
TEST_VAR_FALSE(CMDEF_OS_MACOS)
TEST_VAR_TRUE(CMDEF_OS_POSIX)

# Architecture Variables
TEST_VAR_DEFINED(CMDEF_ARCHITECTURE)
# Linux architecture should be one of the supported ones
SET(supported_archs "x86-64" "x86" "aarch64" "aplsil")
LIST(FIND supported_archs "${CMDEF_ARCHITECTURE}" arch_found)
IF(arch_found EQUAL -1)
Expand Down Expand Up @@ -84,11 +78,9 @@ FUNCTION(TEST_LINUX_CACHE_VARIABLES)
CMAKE_PATH(CONVERT "${CMDEF_BINARY_INSTALL_DIR}" TO_CMAKE_PATH_LIST _normalized)
TEST_VAR_VALUE_EQUAL(_normalized "bin")

# Naming Convention Variables
TEST_VAR_VALUE_EQUAL(CMDEF_ENV_NAME_SEPARATOR "_")
TEST_VAR_VALUE_EQUAL(CMDEF_ENV_NAMESPACE_SUFFIX "::")

# Supported Languages
TEST_VAR_DEFINED(CMDEF_SUPPORTED_LANG_LIST)
SET(expected_langs "C" "CXX" "OBJC" "OBJCXX" "RC")
FOREACH(lang IN LISTS expected_langs)
Expand All @@ -98,14 +90,11 @@ FUNCTION(TEST_LINUX_CACHE_VARIABLES)
ENDIF()
ENDFOREACH()

# Output Directory Variables
TEST_VAR_DEFINED(CMDEF_TARGET_OUTPUT_DIRECTORY)

# Description Variables
TEST_VAR_VALUE_EQUAL(CMDEF_ENV_DESCRIPTION_COMPANY_NAME "Company name")
TEST_VAR_VALUE_EQUAL(CMDEF_ENV_DESCRIPTION_COPYRIGHT "Company name")

# Multi-config Variables
TEST_VAR_VALUE_EQUAL(CMDEF_MULTICONF_FOLDER_NAME "CMDEF")

MESSAGE(STATUS "Linux cache variables validation passed")
Expand All @@ -120,12 +109,6 @@ ENDFUNCTION()
# <function>()
#
FUNCTION(TEST_MACOS_CACHE_VARIABLES)
IF(NOT CMDEF_OS_MACOS)
MESSAGE(STATUS "Skipping macOS cache variables test - not running on macOS")
RETURN()
ENDIF()

MESSAGE(STATUS "Testing CMDEF_ENV cache variables for macOS platform")

TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME "macos")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_SHORT "mac")
Expand Down Expand Up @@ -197,13 +180,6 @@ ENDFUNCTION()
# <function>()
#
FUNCTION(TEST_WINDOWS_CACHE_VARIABLES)
IF(NOT CMDEF_OS_WINDOWS)
MESSAGE(STATUS "Skipping Windows cache variables test - not running on Windows")
RETURN()
ENDIF()

MESSAGE(STATUS "Testing CMDEF_ENV cache variables for Windows platform")

TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME "windows")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_SHORT "win")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_UPPER "WINDOWS")
Expand Down Expand Up @@ -244,7 +220,6 @@ FUNCTION(TEST_WINDOWS_CACHE_VARIABLES)
TEST_VAR_VALUE_EQUAL(CMDEF_ENV_NAME_SEPARATOR "_")
TEST_VAR_VALUE_EQUAL(CMDEF_ENV_NAMESPACE_SUFFIX "::")

# Supported Languages
TEST_VAR_DEFINED(CMDEF_SUPPORTED_LANG_LIST)
SET(expected_langs "C" "CXX" "OBJC" "OBJCXX" "RC")
FOREACH(lang IN LISTS expected_langs)
Expand Down Expand Up @@ -367,8 +342,14 @@ FUNCTION(TEST_ENVIRONMENT_VARIABLES)
MESSAGE(STATUS "Environment variable support validation passed")
ENDFUNCTION()

TEST_LINUX_CACHE_VARIABLES()
TEST_MACOS_CACHE_VARIABLES()
TEST_WINDOWS_CACHE_VARIABLES()
IF(CMDEF_OS_LINUX)
TEST_LINUX_CACHE_VARIABLES()
ELSEIF(CMDEF_OS_MACOS)
TEST_MACOS_CACHE_VARIABLES()
ELSEIF(CMDEF_OS_WINDOWS)
TEST_WINDOWS_CACHE_VARIABLES()
ELSE()
MESSAGE(FATAL_ERROR "Unsupported or undetected OS")
ENDIF()
TEST_COMMON_CACHE_VARIABLES()
TEST_ENVIRONMENT_VARIABLES()
12 changes: 7 additions & 5 deletions test/CMDEF_ENV/os_detection/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,33 @@
# Test OS detection in CMDEF_ENV
#

CMAKE_MINIMUM_REQUIRED(VERSION 3.22)
PROJECT(CMDEF_ENV_OS_DETECTION_TEST)
IF(NOT DEFINED CMAKE_SCRIPT_MODE_FILE)
CMAKE_MINIMUM_REQUIRED(VERSION 3.22)
PROJECT(CMDEF_ENV_OS_DETECTION_TEST)
ENDIF()

FIND_PACKAGE(CMLIB REQUIRED)

INCLUDE("${CMAKE_CURRENT_LIST_DIR}/../../TEST.cmake")
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/../../../system_modules/CMDEF_ENV.cmake")

IF(CMDEF_OS_LINUX)
IF(UNIX AND NOT APPLE)
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME "linux")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_SHORT "lin")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_UPPER "LINUX")
TEST_VAR_TRUE(CMDEF_OS_LINUX)
TEST_VAR_FALSE(CMDEF_OS_WINDOWS)
TEST_VAR_FALSE(CMDEF_OS_MACOS)
TEST_VAR_TRUE(CMDEF_OS_POSIX)
ELSEIF(CMDEF_OS_WINDOWS)
ELSEIF(WIN32)
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME "windows")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_SHORT "win")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_UPPER "WINDOWS")
TEST_VAR_TRUE(CMDEF_OS_WINDOWS)
TEST_VAR_FALSE(CMDEF_OS_LINUX)
TEST_VAR_FALSE(CMDEF_OS_MACOS)
TEST_VAR_FALSE(CMDEF_OS_POSIX)
ELSEIF(CMDEF_OS_MACOS)
ELSEIF(APPLE)
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME "macos")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_SHORT "mac")
TEST_VAR_VALUE_EQUAL(CMDEF_OS_NAME_UPPER "MACOS")
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=1.0.0
version=1.0.3
Loading