Merge pull request #318226 from paparodeo/cmake-cc-full-path
cmake: fix strictDeps
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx
|
||||
index 8840cdcb..c34b7ee9 100644
|
||||
--- a/Source/cmFindBase.cxx
|
||||
+++ b/Source/cmFindBase.cxx
|
||||
@@ -280,6 +280,11 @@ void cmFindBase::FillCMakeEnvironmentPath()
|
||||
// Add CMAKE_*_PATH environment variables
|
||||
std::string var = cmStrCat("CMAKE_", this->CMakePathName, "_PATH");
|
||||
paths.AddEnvPrefixPath("CMAKE_PREFIX_PATH");
|
||||
+ if (this->CMakePathName != "PROGRAM") {
|
||||
+ // Like CMAKE_PREFIX_PATH except when searching for programs. Programs need
|
||||
+ // to be located via PATH
|
||||
+ paths.AddEnvPrefixPath("NIXPKGS_CMAKE_PREFIX_PATH");
|
||||
+ }
|
||||
paths.AddEnvPath(var);
|
||||
|
||||
if (this->CMakePathName == "PROGRAM") {
|
||||
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
|
||||
index 9b51b1ad..6acc676c 100644
|
||||
--- a/Source/cmFindPackageCommand.cxx
|
||||
+++ b/Source/cmFindPackageCommand.cxx
|
||||
@@ -2039,6 +2039,7 @@ void cmFindPackageCommand::FillPrefixesCMakeEnvironment()
|
||||
|
||||
// And now the general CMake environment variables
|
||||
paths.AddEnvPath("CMAKE_PREFIX_PATH");
|
||||
+ paths.AddEnvPath("NIXPKGS_CMAKE_PREFIX_PATH");
|
||||
if (this->DebugMode) {
|
||||
debugBuffer = cmStrCat(debugBuffer,
|
||||
"CMAKE_PREFIX_PATH env variable "
|
||||
@@ -56,6 +56,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Add NIXPKGS_CMAKE_PREFIX_PATH to cmake which is like CMAKE_PREFIX_PATH
|
||||
# except it is not searched for programs
|
||||
./000-nixpkgs-cmake-prefix-path.diff
|
||||
# Don't search in non-Nix locations such as /usr, but do search in our libc.
|
||||
./001-search-path.diff
|
||||
# Don't depend on frameworks.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
addCMakeParams() {
|
||||
addToSearchPath CMAKE_PREFIX_PATH $1
|
||||
# NIXPKGS_CMAKE_PREFIX_PATH is like CMAKE_PREFIX_PATH except cmake
|
||||
# will not search it for programs
|
||||
addToSearchPath NIXPKGS_CMAKE_PREFIX_PATH $1
|
||||
}
|
||||
|
||||
fixCmakeFiles() {
|
||||
@@ -151,22 +153,22 @@ makeCmakeFindLibs(){
|
||||
for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-}; do
|
||||
if test -n "$isystem_seen" && test -d "$flag"; then
|
||||
isystem_seen=
|
||||
export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}"
|
||||
addToSearchPath CMAKE_INCLUDE_PATH "${flag}"
|
||||
elif test -n "$iframework_seen" && test -d "$flag"; then
|
||||
iframework_seen=
|
||||
export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}"
|
||||
addToSearchPath CMAKE_FRAMEWORK_PATH "${flag}"
|
||||
else
|
||||
isystem_seen=
|
||||
iframework_seen=
|
||||
case $flag in
|
||||
-I*)
|
||||
export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}"
|
||||
addToSearchPath CMAKE_INCLUDE_PATH "${flag:2}"
|
||||
;;
|
||||
-L*)
|
||||
export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}"
|
||||
addToSearchPath CMAKE_LIBRARY_PATH "${flag:2}"
|
||||
;;
|
||||
-F*)
|
||||
export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}"
|
||||
addToSearchPath CMAKE_FRAMEWORK_PATH "${flag:2}"
|
||||
;;
|
||||
-isystem)
|
||||
isystem_seen=1
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
diff --git a/mesonbuild/dependencies/data/CMakePathInfo.txt b/mesonbuild/dependencies/data/CMakePathInfo.txt
|
||||
index 662ec58..4d5f4e4 100644
|
||||
--- a/mesonbuild/dependencies/data/CMakePathInfo.txt
|
||||
+++ b/mesonbuild/dependencies/data/CMakePathInfo.txt
|
||||
@@ -5,6 +5,7 @@ list(APPEND TMP_PATHS_LIST ${CMAKE_PREFIX_PATH})
|
||||
list(APPEND TMP_PATHS_LIST ${CMAKE_FRAMEWORK_PATH})
|
||||
list(APPEND TMP_PATHS_LIST ${CMAKE_APPBUNDLE_PATH})
|
||||
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_PREFIX_PATH})
|
||||
+list(APPEND TMP_PATHS_LIST $ENV{NIXPKGS_CMAKE_PREFIX_PATH})
|
||||
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_FRAMEWORK_PATH})
|
||||
list(APPEND TMP_PATHS_LIST $ENV{CMAKE_APPBUNDLE_PATH})
|
||||
list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_PREFIX_PATH})
|
||||
@@ -31,6 +31,9 @@ python3.pkgs.buildPythonApplication rec {
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Nixpkgs cmake uses NIXPKGS_CMAKE_PREFIX_PATH for the search path
|
||||
./000-nixpkgs-cmake-prefix-path.patch
|
||||
|
||||
# In typical distributions, RPATH is only needed for internal libraries so
|
||||
# meson removes everything else. With Nix, the locations of libraries
|
||||
# are not as predictable, therefore we need to keep them in the RPATH.
|
||||
|
||||
Reference in New Issue
Block a user