summary refs log tree commit diff
path: root/pkgs/development/tools/build-managers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/build-managers')
-rw-r--r--pkgs/development/tools/build-managers/cmake/2.6.3.nix31
-rw-r--r--pkgs/development/tools/build-managers/cmake/default.nix24
-rwxr-xr-xpkgs/development/tools/build-managers/cmake/setup-hook.sh55
3 files changed, 74 insertions, 36 deletions
diff --git a/pkgs/development/tools/build-managers/cmake/2.6.3.nix b/pkgs/development/tools/build-managers/cmake/2.6.3.nix
new file mode 100644
index 0000000000000..bb9c3b1485f95
--- /dev/null
+++ b/pkgs/development/tools/build-managers/cmake/2.6.3.nix
@@ -0,0 +1,31 @@
+{fetchurl, stdenv, replace, ncurses}:
+
+stdenv.mkDerivation rec {
+  name = "cmake-2.6.3-RC-15";
+
+  # We look for cmake modules in .../share/cmake-${majorVersion}/Modules.
+  majorVersion = "2.6";
+
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    homepage = http://www.cmake.org/;
+    description = "Cross-Platform Makefile Generator";
+  };
+
+  src = fetchurl {
+    url = "http://www.cmake.org/files/v2.6/${name}.tar.gz";
+    sha256 = "476b6daca63c39bc46955f99f2566735d51159c43ccc716fa689ba2a2fa7e432";
+  };
+
+  postUnpack = ''
+    dontUseCmakeConfigure=1
+    source $setupHook
+    fixCmakeFiles $sourceRoot
+    echo 'SET (CMAKE_SYSTEM_PREFIX_PATH "'${ncurses}'" CACHE FILEPATH "Root for libs for cmake" FORCE)' > $sourceRoot/cmakeInit.txt
+  '';
+
+  configureFlags= [ " --init=cmakeInit.txt " ];
+
+  postInstall = "fixCmakeFiles $out/share";
+}
diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix
index 171a44d373329..f46ba5ce9aa58 100644
--- a/pkgs/development/tools/build-managers/cmake/default.nix
+++ b/pkgs/development/tools/build-managers/cmake/default.nix
@@ -2,20 +2,30 @@
 
 stdenv.mkDerivation rec {
   name = "cmake-2.6.2";
+
+  # We look for cmake modules in .../share/cmake-${majorVersion}/Modules.
+  majorVersion = "2.6"; 
+  
   setupHook = ./setup-hook.sh;
+  
   meta = {
+    homepage = http://www.cmake.org/;
     description = "Cross-Platform Makefile Generator";
   };
+  
   src = fetchurl {
     url = "http://www.cmake.org/files/v2.6/${name}.tar.gz";
     sha256 = "b3f5a9dfa97fb82cb1b7d78a62d949f93c8d4317af36674f337d27066fa6b7e9";
   };
-  inherit ncurses;
-  propagatedBuildInputs = [replace];
-  postUnpack = "
-    source \${setupHook}; fixCmakeFiles \${sourceRoot};
-    echo 'SET (CMAKE_SYSTEM_PREFIX_PATH \"'\${ncurses}'\" CACHE FILEPATH \"Root for libs for cmake\" FORCE)' > \${sourceRoot}/cmakeInit.txt
-  ";
+  
+  postUnpack = ''
+    dontUseCmakeConfigure=1
+    source $setupHook
+    fixCmakeFiles $sourceRoot
+    echo 'SET (CMAKE_SYSTEM_PREFIX_PATH "'${ncurses}'" CACHE FILEPATH "Root for libs for cmake" FORCE)' > $sourceRoot/cmakeInit.txt
+  '';
+  
   configureFlags= [ " --init=cmakeInit.txt " ];
-  postInstall="fixCmakeFiles \$out/share";
+  
+  postInstall = "fixCmakeFiles $out/share";
 }
diff --git a/pkgs/development/tools/build-managers/cmake/setup-hook.sh b/pkgs/development/tools/build-managers/cmake/setup-hook.sh
index 2ec77d8223e38..c289272d2a783 100755
--- a/pkgs/development/tools/build-managers/cmake/setup-hook.sh
+++ b/pkgs/development/tools/build-managers/cmake/setup-hook.sh
@@ -1,49 +1,46 @@
-addCMakeParamsInclude()
+addCMakeParams()
 {
     addToSearchPath CMAKE_INCLUDE_PATH /include "" $1
-}
-
-addCMakeParamsLibs()
-{
     addToSearchPath CMAKE_LIBRARY_PATH /lib "" $1
-}
-
-addCMakeModulePath()
-{
-    addToSearchPath CMAKE_MODULE_PATH /share/cmake-2.4/Modules "" $1
+    addToSearchPath CMAKE_MODULE_PATH /share/cmake-@majorVersion@/Modules "" $1
 }
 
 fixCmakeFiles()
 {
-    local replaceArgs;
-    echo "Fixing cmake files"
+    local replaceArgs
+    echo "fixing cmake files"
     replaceArgs="-e -f -L -T /usr /FOO"
-    replaceArgs="${replaceArgs}     -a NO_DEFAULT_PATH \"\" -a NO_SYSTEM_PATH \"\""
+    replaceArgs="$replaceArgs -a NO_DEFAULT_PATH \"\" -a NO_SYSTEM_PATH \"\""
     find $1 -type f -name "*.cmake" | xargs replace-literal ${replaceArgs}
 }
 
-cmakePostUnpack()
+cmakeConfigurePhase()
 {
-    sourceRoot=$sourceRoot/build
-    mkdir -v $sourceRoot
-    echo source root reset to $sourceRoot
-
-    if [ -z "$dontFixCmake" ]; then
+    eval "$preConfigure"
+    
+    if test -z "$dontFixCmake"; then
         fixCmakeFiles .
     fi
 
-    if [ -z "$configureScript" ]; then
-        configureScript="cmake .."
+    if test -z "$dontUseCmakeBuildDir"; then
+        mkdir -p build
+        cd build
+        cmakeDir=..
     fi
-    if [ -z "$dontAddPrefix" ]; then
-        dontAddPrefix=1
-        configureFlags="-DCMAKE_INSTALL_PREFIX=$out $configureFlags"
+
+    if test -z "$dontAddPrefix"; then
+        cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags"
     fi
-}
 
+    echo "cmake flags: $cmakeFlags ${cmakeFlagsArray[@]}"
+    
+    cmake ${cmakeDir:-.} $cmakeFlags ${cmakeFlagsArray[@]}
+    
+    eval "$postConfigure"
+}
 
-if [ -z "$noCmakeTewaks" ]; then
-    postUnpack="cmakePostUnpack${postUnpack:+; }${postUnpack}"
-fi;
+if test -z "$dontUseCmakeConfigure"; then
+    configurePhase=cmakeConfigurePhase
+fi
 
-envHooks=(${envHooks[@]} addCMakeParamsInclude addCMakeParamsLibs addCMakeModulePath)
+envHooks=(${envHooks[@]} addCMakeParams)