summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-09-11 23:11:54 (GMT)
committerBrad King <brad.king@kitware.com>2023-09-13 12:35:59 (GMT)
commit5e5132e1b1a090b8d9f58e0316fced47479c9a53 (patch)
tree4d8d6d06322946788d16a73358c0424f0d2c542f /Tests
parenta273b7f5d4e68df5b1cbc20243491ff23f5d353c (diff)
downloadCMake-5e5132e1b1a090b8d9f58e0316fced47479c9a53.zip
CMake-5e5132e1b1a090b8d9f58e0316fced47479c9a53.tar.gz
CMake-5e5132e1b1a090b8d9f58e0316fced47479c9a53.tar.bz2
MinGW: Search for packages in standard MSYSTEM environment prefixes
MSYS2 and similar MinGW/MSYS distributions define development environments with a `MSYSTEM` environment variable. Each such environment has a documented installation prefix for its packages, often provided by a `MSYSTEM_PREFIX` environment variable. Since commit 84a25fc263 (cmake_host_system_information: Add MSYSTEM_PREFIX query, 2023-09-08) we can look up this prefix. Add `$MSYSTEM_PREFIX/local` and `$MSYSTEM_PREFIX` to our system search prefixes when targeting MinGW under `MSYSTEM` environments. This is their equivalent to `/usr/local` and `/usr`, which we search by default on UNIX systems. Issue: #24216
Diffstat (limited to 'Tests')
-rw-r--r--Tests/RunCMake/CMakeLists.txt8
-rw-r--r--Tests/RunCMake/find_file/MSYSTEM_PREFIX-stdout.txt1
-rw-r--r--Tests/RunCMake/find_file/MSYSTEM_PREFIX.cmake5
-rw-r--r--Tests/RunCMake/find_file/MSYSTEM_PREFIX/include/msystem_prefix.h0
-rw-r--r--Tests/RunCMake/find_file/RunCMakeTest.cmake4
-rw-r--r--Tests/RunCMake/find_library/MSYSTEM_PREFIX-stdout.txt1
-rw-r--r--Tests/RunCMake/find_library/MSYSTEM_PREFIX.cmake5
-rw-r--r--Tests/RunCMake/find_library/MSYSTEM_PREFIX/lib/libmsystem_prefix.a0
-rw-r--r--Tests/RunCMake/find_library/RunCMakeTest.cmake4
-rw-r--r--Tests/RunCMake/find_package/MSYSTEM_PREFIX-stdout.txt1
-rw-r--r--Tests/RunCMake/find_package/MSYSTEM_PREFIX.cmake5
-rw-r--r--Tests/RunCMake/find_package/MSYSTEM_PREFIX/MsysPfxConfig.cmake0
-rw-r--r--Tests/RunCMake/find_package/RunCMakeTest.cmake4
-rw-r--r--Tests/RunCMake/find_path/MSYSTEM_PREFIX-stdout.txt1
-rw-r--r--Tests/RunCMake/find_path/MSYSTEM_PREFIX.cmake5
-rw-r--r--Tests/RunCMake/find_path/MSYSTEM_PREFIX/include/msystem_prefix.h0
-rw-r--r--Tests/RunCMake/find_path/RunCMakeTest.cmake4
17 files changed, 44 insertions, 4 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 02efb25..bf93042 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -518,10 +518,10 @@ foreach(var
endforeach()
add_RunCMake_test(file-DOWNLOAD)
add_RunCMake_test(file-RPATH -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME})
-add_RunCMake_test(find_file)
-add_RunCMake_test(find_library -DCYGWIN=${CYGWIN} -DMSYS=${MSYS})
-add_RunCMake_test(find_package -DMSYS=${MSYS})
-add_RunCMake_test(find_path)
+add_RunCMake_test(find_file -DMINGW=${MINGW})
+add_RunCMake_test(find_library -DMINGW=${MINGW} -DCYGWIN=${CYGWIN} -DMSYS=${MSYS})
+add_RunCMake_test(find_package -DMINGW=${MINGW} -DMSYS=${MSYS})
+add_RunCMake_test(find_path -DMINGW=${MINGW})
add_RunCMake_test(find_program -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME})
add_RunCMake_test(foreach)
add_RunCMake_test(function)
diff --git a/Tests/RunCMake/find_file/MSYSTEM_PREFIX-stdout.txt b/Tests/RunCMake/find_file/MSYSTEM_PREFIX-stdout.txt
new file mode 100644
index 0000000..ab9b9d5
--- /dev/null
+++ b/Tests/RunCMake/find_file/MSYSTEM_PREFIX-stdout.txt
@@ -0,0 +1 @@
+-- MSYSTEM_PREFIX_H='[^']*/Tests/RunCMake/find_file/MSYSTEM_PREFIX/include/msystem_prefix.h'
diff --git a/Tests/RunCMake/find_file/MSYSTEM_PREFIX.cmake b/Tests/RunCMake/find_file/MSYSTEM_PREFIX.cmake
new file mode 100644
index 0000000..08e4127
--- /dev/null
+++ b/Tests/RunCMake/find_file/MSYSTEM_PREFIX.cmake
@@ -0,0 +1,5 @@
+set(ENV{MSYSTEM} "FAKEMSYS")
+set(ENV{MSYSTEM_PREFIX} "${CMAKE_CURRENT_LIST_DIR}/MSYSTEM_PREFIX")
+enable_language(C)
+find_file(MSYSTEM_PREFIX_H NAMES msystem_prefix.h)
+message(STATUS "MSYSTEM_PREFIX_H='${MSYSTEM_PREFIX_H}'")
diff --git a/Tests/RunCMake/find_file/MSYSTEM_PREFIX/include/msystem_prefix.h b/Tests/RunCMake/find_file/MSYSTEM_PREFIX/include/msystem_prefix.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/find_file/MSYSTEM_PREFIX/include/msystem_prefix.h
diff --git a/Tests/RunCMake/find_file/RunCMakeTest.cmake b/Tests/RunCMake/find_file/RunCMakeTest.cmake
index 296bb71..2d59e38 100644
--- a/Tests/RunCMake/find_file/RunCMakeTest.cmake
+++ b/Tests/RunCMake/find_file/RunCMakeTest.cmake
@@ -12,6 +12,10 @@ run_cmake(VALIDATOR-undefined-function)
run_cmake(VALIDATOR-specify-macro)
run_cmake(VALIDATOR)
+if(CMAKE_HOST_WIN32 AND MINGW)
+ run_cmake(MSYSTEM_PREFIX)
+endif()
+
run_cmake_with_options(FromPATHEnvDebugVar --debug-find-var=PrefixInPATH_File)
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
diff --git a/Tests/RunCMake/find_library/MSYSTEM_PREFIX-stdout.txt b/Tests/RunCMake/find_library/MSYSTEM_PREFIX-stdout.txt
new file mode 100644
index 0000000..b19bcce
--- /dev/null
+++ b/Tests/RunCMake/find_library/MSYSTEM_PREFIX-stdout.txt
@@ -0,0 +1 @@
+-- MSYSTEM_PREFIX_LIB='[^']*/Tests/RunCMake/find_library/MSYSTEM_PREFIX/lib/libmsystem_prefix.a'
diff --git a/Tests/RunCMake/find_library/MSYSTEM_PREFIX.cmake b/Tests/RunCMake/find_library/MSYSTEM_PREFIX.cmake
new file mode 100644
index 0000000..ef4ce2f
--- /dev/null
+++ b/Tests/RunCMake/find_library/MSYSTEM_PREFIX.cmake
@@ -0,0 +1,5 @@
+set(ENV{MSYSTEM} "FAKEMSYS")
+set(ENV{MSYSTEM_PREFIX} "${CMAKE_CURRENT_LIST_DIR}/MSYSTEM_PREFIX")
+enable_language(C)
+find_library(MSYSTEM_PREFIX_LIB NAMES msystem_prefix)
+message(STATUS "MSYSTEM_PREFIX_LIB='${MSYSTEM_PREFIX_LIB}'")
diff --git a/Tests/RunCMake/find_library/MSYSTEM_PREFIX/lib/libmsystem_prefix.a b/Tests/RunCMake/find_library/MSYSTEM_PREFIX/lib/libmsystem_prefix.a
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/find_library/MSYSTEM_PREFIX/lib/libmsystem_prefix.a
diff --git a/Tests/RunCMake/find_library/RunCMakeTest.cmake b/Tests/RunCMake/find_library/RunCMakeTest.cmake
index 8b223b4..0bed252 100644
--- a/Tests/RunCMake/find_library/RunCMakeTest.cmake
+++ b/Tests/RunCMake/find_library/RunCMakeTest.cmake
@@ -20,6 +20,10 @@ run_cmake(VALIDATOR-undefined-function)
run_cmake(VALIDATOR-specify-macro)
run_cmake(VALIDATOR)
+if(CMAKE_HOST_WIN32 AND MINGW)
+ run_cmake(MSYSTEM_PREFIX)
+endif()
+
run_cmake_script(FromScriptMode "-DTEMP_DIR=${RunCMake_BINARY_DIR}/FromScriptMode-temp")
run_cmake_with_options(FromPATHEnvDebugVar --debug-find-var=CREATED_LIBRARY)
diff --git a/Tests/RunCMake/find_package/MSYSTEM_PREFIX-stdout.txt b/Tests/RunCMake/find_package/MSYSTEM_PREFIX-stdout.txt
new file mode 100644
index 0000000..b1c8346
--- /dev/null
+++ b/Tests/RunCMake/find_package/MSYSTEM_PREFIX-stdout.txt
@@ -0,0 +1 @@
+-- MsysPfx_DIR='[^']*/Tests/RunCMake/find_package/MSYSTEM_PREFIX'
diff --git a/Tests/RunCMake/find_package/MSYSTEM_PREFIX.cmake b/Tests/RunCMake/find_package/MSYSTEM_PREFIX.cmake
new file mode 100644
index 0000000..2826e53
--- /dev/null
+++ b/Tests/RunCMake/find_package/MSYSTEM_PREFIX.cmake
@@ -0,0 +1,5 @@
+set(ENV{MSYSTEM} "FAKEMSYS")
+set(ENV{MSYSTEM_PREFIX} "${CMAKE_CURRENT_LIST_DIR}/MSYSTEM_PREFIX")
+enable_language(C)
+find_package(MsysPfx QUIET)
+message(STATUS "MsysPfx_DIR='${MsysPfx_DIR}'")
diff --git a/Tests/RunCMake/find_package/MSYSTEM_PREFIX/MsysPfxConfig.cmake b/Tests/RunCMake/find_package/MSYSTEM_PREFIX/MsysPfxConfig.cmake
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/find_package/MSYSTEM_PREFIX/MsysPfxConfig.cmake
diff --git a/Tests/RunCMake/find_package/RunCMakeTest.cmake b/Tests/RunCMake/find_package/RunCMakeTest.cmake
index 006757a..a93b811 100644
--- a/Tests/RunCMake/find_package/RunCMakeTest.cmake
+++ b/Tests/RunCMake/find_package/RunCMakeTest.cmake
@@ -72,6 +72,10 @@ run_cmake(REGISTRY_VIEW-no-view)
run_cmake(REGISTRY_VIEW-wrong-view)
run_cmake(REGISTRY_VIEW-propagated)
+if(CMAKE_HOST_WIN32 AND MINGW)
+ run_cmake(MSYSTEM_PREFIX)
+endif()
+
if(CMAKE_HOST_WIN32)
run_cmake(CMP0144-WARN-CaseInsensitive)
run_cmake(CMP0144-OLD-CaseInsensitive)
diff --git a/Tests/RunCMake/find_path/MSYSTEM_PREFIX-stdout.txt b/Tests/RunCMake/find_path/MSYSTEM_PREFIX-stdout.txt
new file mode 100644
index 0000000..87ee490
--- /dev/null
+++ b/Tests/RunCMake/find_path/MSYSTEM_PREFIX-stdout.txt
@@ -0,0 +1 @@
+-- MSYSTEM_PREFIX_INCLUDE_DIR='[^']*/Tests/RunCMake/find_path/MSYSTEM_PREFIX/include'
diff --git a/Tests/RunCMake/find_path/MSYSTEM_PREFIX.cmake b/Tests/RunCMake/find_path/MSYSTEM_PREFIX.cmake
new file mode 100644
index 0000000..d17a52f
--- /dev/null
+++ b/Tests/RunCMake/find_path/MSYSTEM_PREFIX.cmake
@@ -0,0 +1,5 @@
+set(ENV{MSYSTEM} "FAKEMSYS")
+set(ENV{MSYSTEM_PREFIX} "${CMAKE_CURRENT_LIST_DIR}/MSYSTEM_PREFIX")
+enable_language(C)
+find_path(MSYSTEM_PREFIX_INCLUDE_DIR NAMES msystem_prefix.h)
+message(STATUS "MSYSTEM_PREFIX_INCLUDE_DIR='${MSYSTEM_PREFIX_INCLUDE_DIR}'")
diff --git a/Tests/RunCMake/find_path/MSYSTEM_PREFIX/include/msystem_prefix.h b/Tests/RunCMake/find_path/MSYSTEM_PREFIX/include/msystem_prefix.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/find_path/MSYSTEM_PREFIX/include/msystem_prefix.h
diff --git a/Tests/RunCMake/find_path/RunCMakeTest.cmake b/Tests/RunCMake/find_path/RunCMakeTest.cmake
index 9c76f2e..2ed4d7d 100644
--- a/Tests/RunCMake/find_path/RunCMakeTest.cmake
+++ b/Tests/RunCMake/find_path/RunCMakeTest.cmake
@@ -12,6 +12,10 @@ run_cmake(VALIDATOR-undefined-function)
run_cmake(VALIDATOR-specify-macro)
run_cmake(VALIDATOR)
+if(CMAKE_HOST_WIN32 AND MINGW)
+ run_cmake(MSYSTEM_PREFIX)
+endif()
+
if(APPLE)
run_cmake(FrameworksWithSubdirs)
endif()