Sync with trunk r63192.
[reactos.git] / configure.sh
index 8aea7b9..be49ba4 100755 (executable)
@@ -1,8 +1,8 @@
-#!/bin/bash
-if [ "x$ROS_ARCH" == "x" ]
-then
-  echo Could not detect RosBE.
-  exit 1
+#!/bin/sh
+
+if [ "x$ROS_ARCH" = "x" ]; then
+       echo Could not detect RosBE.
+       exit 1
 fi
 
 BUILD_ENVIRONMENT=MinGW
@@ -10,34 +10,55 @@ ARCH=$ROS_ARCH
 REACTOS_SOURCE_DIR=$(cd `dirname $0` && pwd)
 REACTOS_OUTPUT_PATH=output-$BUILD_ENVIRONMENT-$ARCH
 
-if [ "$REACTOS_SOURCE_DIR" == "$PWD" ]
-then
-  echo Creating directories in $REACTOS_OUTPUT_PATH
-  mkdir -p $REACTOS_OUTPUT_PATH
-  cd "$REACTOS_OUTPUT_PATH"
+usage() {
+       echo Invalid parameter given.
+       exit 1
+}
+
+CMAKE_GENERATOR="Ninja"
+while [ $# -gt 0 ]; do
+       case $1 in
+               -D)
+                       shift
+                       if echo "x$1" | grep 'x?*=*' > /dev/null; then
+                               ROS_CMAKEOPTS=$ROS_CMAKEOPTS" -D $1"
+                       else
+                               usage
+                       fi
+               ;;
+
+               -D?*=*|-D?*)
+                       ROS_CMAKEOPTS=$ROS_CMAKEOPTS" $1"
+               ;;
+               makefiles|Makefiles)
+                       CMAKE_GENERATOR="Unix Makefiles"
+               ;;
+               *)
+                       usage
+       esac
+
+       shift
+done
+
+if [ "$REACTOS_SOURCE_DIR" = "$PWD" ]; then
+       echo Creating directories in $REACTOS_OUTPUT_PATH
+       mkdir -p "$REACTOS_OUTPUT_PATH"
+       cd "$REACTOS_OUTPUT_PATH"
 fi
 
-mkdir -p host-tools
-mkdir -p reactos
+mkdir -p host-tools reactos
 
 echo Preparing host tools...
 cd host-tools
-if [ -f CMakeCache.txt ]
-then
-  rm -f CMakeCache.txt
-fi
+rm -f CMakeCache.txt
 
 REACTOS_BUILD_TOOLS_DIR="$PWD"
-cmake -G "Unix Makefiles" -DARCH=$ARCH "$REACTOS_SOURCE_DIR"
+cmake -G "$CMAKE_GENERATOR" -DARCH:STRING=$ARCH $ROS_CMAKEOPTS "$REACTOS_SOURCE_DIR"
 
 echo Preparing reactos...
 cd ../reactos
-if [ -f CMakeCache.txt ]
-then
-  rm -f CMakeCache.txt
-fi
-
-cmake -G "Unix Makefiles" -DENABLE_CCACHE=0 -DPCH=0 -DCMAKE_TOOLCHAIN_FILE=toolchain-gcc.cmake -DARCH=$ARCH -DREACTOS_BUILD_TOOLS_DIR="$REACTOS_BUILD_TOOLS_DIR" "$REACTOS_SOURCE_DIR"
+rm -f CMakeCache.txt
 
-echo Configure script complete! Enter directories and execute appropriate build commands\(ex: make, makex, etc...\).
+cmake -G "$CMAKE_GENERATOR" -DENABLE_CCACHE:BOOL=0 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-gcc.cmake -DARCH:STRING=$ARCH -DREACTOS_BUILD_TOOLS_DIR:PATH="$REACTOS_BUILD_TOOLS_DIR" $ROS_CMAKEOPTS "$REACTOS_SOURCE_DIR"
 
+echo Configure script complete! Enter directories and execute appropriate build commands \(ex: ninja, make, makex, etc...\).