Merge pull request #318226 from paparodeo/cmake-cc-full-path

cmake: fix strictDeps

authored by

Emily and committed by
GitHub
8ac24638 066521b9

+54 -6
+28
pkgs/by-name/cm/cmake/000-nixpkgs-cmake-prefix-path.diff
··· 1 + diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx 2 + index 8840cdcb..c34b7ee9 100644 3 + --- a/Source/cmFindBase.cxx 4 + +++ b/Source/cmFindBase.cxx 5 + @@ -280,6 +280,11 @@ void cmFindBase::FillCMakeEnvironmentPath() 6 + // Add CMAKE_*_PATH environment variables 7 + std::string var = cmStrCat("CMAKE_", this->CMakePathName, "_PATH"); 8 + paths.AddEnvPrefixPath("CMAKE_PREFIX_PATH"); 9 + + if (this->CMakePathName != "PROGRAM") { 10 + + // Like CMAKE_PREFIX_PATH except when searching for programs. Programs need 11 + + // to be located via PATH 12 + + paths.AddEnvPrefixPath("NIXPKGS_CMAKE_PREFIX_PATH"); 13 + + } 14 + paths.AddEnvPath(var); 15 + 16 + if (this->CMakePathName == "PROGRAM") { 17 + diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx 18 + index 9b51b1ad..6acc676c 100644 19 + --- a/Source/cmFindPackageCommand.cxx 20 + +++ b/Source/cmFindPackageCommand.cxx 21 + @@ -2039,6 +2039,7 @@ void cmFindPackageCommand::FillPrefixesCMakeEnvironment() 22 + 23 + // And now the general CMake environment variables 24 + paths.AddEnvPath("CMAKE_PREFIX_PATH"); 25 + + paths.AddEnvPath("NIXPKGS_CMAKE_PREFIX_PATH"); 26 + if (this->DebugMode) { 27 + debugBuffer = cmStrCat(debugBuffer, 28 + "CMAKE_PREFIX_PATH env variable "
+3
pkgs/by-name/cm/cmake/package.nix
··· 56 56 }; 57 57 58 58 patches = [ 59 + # Add NIXPKGS_CMAKE_PREFIX_PATH to cmake which is like CMAKE_PREFIX_PATH 60 + # except it is not searched for programs 61 + ./000-nixpkgs-cmake-prefix-path.diff 59 62 # Don't search in non-Nix locations such as /usr, but do search in our libc. 60 63 ./001-search-path.diff 61 64 # Don't depend on frameworks.
+8 -6
pkgs/by-name/cm/cmake/setup-hook.sh
··· 1 1 addCMakeParams() { 2 - addToSearchPath CMAKE_PREFIX_PATH $1 2 + # NIXPKGS_CMAKE_PREFIX_PATH is like CMAKE_PREFIX_PATH except cmake 3 + # will not search it for programs 4 + addToSearchPath NIXPKGS_CMAKE_PREFIX_PATH $1 3 5 } 4 6 5 7 fixCmakeFiles() { ··· 151 153 for flag in ${NIX_CFLAGS_COMPILE-} ${NIX_LDFLAGS-}; do 152 154 if test -n "$isystem_seen" && test -d "$flag"; then 153 155 isystem_seen= 154 - export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag}" 156 + addToSearchPath CMAKE_INCLUDE_PATH "${flag}" 155 157 elif test -n "$iframework_seen" && test -d "$flag"; then 156 158 iframework_seen= 157 - export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag}" 159 + addToSearchPath CMAKE_FRAMEWORK_PATH "${flag}" 158 160 else 159 161 isystem_seen= 160 162 iframework_seen= 161 163 case $flag in 162 164 -I*) 163 - export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH-}${CMAKE_INCLUDE_PATH:+:}${flag:2}" 165 + addToSearchPath CMAKE_INCLUDE_PATH "${flag:2}" 164 166 ;; 165 167 -L*) 166 - export CMAKE_LIBRARY_PATH="${CMAKE_LIBRARY_PATH-}${CMAKE_LIBRARY_PATH:+:}${flag:2}" 168 + addToSearchPath CMAKE_LIBRARY_PATH "${flag:2}" 167 169 ;; 168 170 -F*) 169 - export CMAKE_FRAMEWORK_PATH="${CMAKE_FRAMEWORK_PATH-}${CMAKE_FRAMEWORK_PATH:+:}${flag:2}" 171 + addToSearchPath CMAKE_FRAMEWORK_PATH "${flag:2}" 170 172 ;; 171 173 -isystem) 172 174 isystem_seen=1
+12
pkgs/by-name/me/meson/000-nixpkgs-cmake-prefix-path.patch
··· 1 + diff --git a/mesonbuild/dependencies/data/CMakePathInfo.txt b/mesonbuild/dependencies/data/CMakePathInfo.txt 2 + index 662ec58..4d5f4e4 100644 3 + --- a/mesonbuild/dependencies/data/CMakePathInfo.txt 4 + +++ b/mesonbuild/dependencies/data/CMakePathInfo.txt 5 + @@ -5,6 +5,7 @@ list(APPEND TMP_PATHS_LIST ${CMAKE_PREFIX_PATH}) 6 + list(APPEND TMP_PATHS_LIST ${CMAKE_FRAMEWORK_PATH}) 7 + list(APPEND TMP_PATHS_LIST ${CMAKE_APPBUNDLE_PATH}) 8 + list(APPEND TMP_PATHS_LIST $ENV{CMAKE_PREFIX_PATH}) 9 + +list(APPEND TMP_PATHS_LIST $ENV{NIXPKGS_CMAKE_PREFIX_PATH}) 10 + list(APPEND TMP_PATHS_LIST $ENV{CMAKE_FRAMEWORK_PATH}) 11 + list(APPEND TMP_PATHS_LIST $ENV{CMAKE_APPBUNDLE_PATH}) 12 + list(APPEND TMP_PATHS_LIST ${CMAKE_SYSTEM_PREFIX_PATH})
+3
pkgs/by-name/me/meson/package.nix
··· 31 31 }; 32 32 33 33 patches = [ 34 + # Nixpkgs cmake uses NIXPKGS_CMAKE_PREFIX_PATH for the search path 35 + ./000-nixpkgs-cmake-prefix-path.patch 36 + 34 37 # In typical distributions, RPATH is only needed for internal libraries so 35 38 # meson removes everything else. With Nix, the locations of libraries 36 39 # are not as predictable, therefore we need to keep them in the RPATH.