diff --git a/script/pre_req b/script/pre_req index 029fd41ae39331b04bde49e07a6a3bbc59baf00a..6fa75ed6d428c32f5e4ca562f9428034c15177ff 100755 --- a/script/pre_req +++ b/script/pre_req @@ -127,21 +127,79 @@ else echo -e "libtool\033[92;1m SUCCESS \033[0m" fi -command -v g++ >/dev/null 2>&1 -if [ $? -ne 0 ]; then - echo >&2 - echo -e "Configure\033[91;5;1m FAILED \033[0m" - echo "OpenFPM require g++ but it's not installed, searching a solution..." - script/solve_gpp $platform - command -v g++ >/dev/null 2>&1 - if [ $? -ne 0 ]; then - echo -e "g++\033[91;5;1m FAILED \033[0m" +#### Detecting g++ +#### Detection is different from os linux in general has g++ and we try to detect g++ + +if [ x"$platform" == x"osx" ]; then + ## we try to detect osx version + major=$(g++ --version | grep LLVM | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)svn.*/\1/g') + middle=$(g++ --version | grep LLVM | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)svn.*/\2/g') + minor=$(g++ --version | grep LLVM | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)svn.*/\3/g') + if [ $major -gt 3 ]; then + echo -e "clang++ $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + elif [ $major -lt 3 ]; then + echo -e "clang++ $major.$middle.$minor \033[91;5;1m FAILED \033[0m your clang is out of date, update to 3.6.0 (Update Xcode) or use gcc 4.8.2 or higher" + elif [ $middle -gt 6 ]; then + echo -e "clang++ $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + elif [ $middle -lt 6 ]; then + echo -e "clang++\033[91;5;1m FAILED \033[0m your clang is out of date, update to 3.6.0 (Update Xcode) or use gcc 4.8.2 or higher" exit 1 else - echo -e "g++\033[92;1m SUCCESS \033[0m" + echo -e "clang++ version $major.$middle.$minor \033[92;1m SUCCESS \033[0m" fi else - echo -e "g++\033[92;1m SUCCESS \033[0m" + command -v g++ >/dev/null 2>&1 + if [ $? -ne 0 ]; then + echo >&2 + echo -e "Configure\033[91;5;1m FAILED \033[0m" + echo "OpenFPM require g++ but it's not installed, searching a solution..." + script/solve_gpp $platform + command -v g++ >/dev/null 2>&1 + if [ $? -ne 0 ]; then + echo -e "g++\033[91;5;1m FAILED \033[0m" + exit 1 + else + echo -e "g++\033[92;1m SUCCESS \033[0m" + fi + else + major=$(g++ --version | grep g++ | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1/g') + middle=$(g++ --version | grep g++ | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\2/g') + minor=$(g++ --version | grep g++ | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\3/g') + if [ $major -gt 4 ]; then + echo -e "g++ $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + elif [ $major -lt 4 ]; then + echo -e "g++ $major.$middle.$minor \033[91;5;1m FAILED \033[0m your g++ version is too old" + elif [ $middle -gt 8 ]; then + echo -e "g++ $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + elif [ $middle -lt 8 ]; then + echo -e "g++ $major.$middle.$minor \033[91;5;1m FAILED \033[0m your g++ version is too old" + elif [ $minor -gt 1 ]; then + echo -e "g++ $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + else + echo -e "g++ $major.$middle.$minor \033[92;1m FAILED \033[0m your g++ version is too old" + fi + fi fi +command -v mpirun >/dev/null 2>&1 +if [ $? -ne 0 ]; then + echo -e "No MPI" +else + major=$(mpirun --version | grep mpirun | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1/g') + middle=$(mpirun --version | grep mpirun | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\2/g') + minor=$(mpirun --version | grep mpirun | sed 's/.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\3/g') + if [ $major -gt 1 ]; then + echo -e "mpirun $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + elif [ $major -lt 1 ]; then + echo -e "mpirun $major.$middle.$minor \033[91;5;1m FAILED \033[0m is too old, 1.8.1 at least required" + elif [ $middle -gt 8 ]; then + echo -e "mpirun $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + elif [ $middle -lt 8 ]; then + echo -e "mpirun $major.$middle.$minor \033[91;5;1m FAILED \033[0m is too old, 1.8.1 at least required" + elif [ $minor -gt 0 ]; then + echo -e "mpirun $major.$middle.$minor \033[92;1m SUCCESS \033[0m" + else + echo -e "mpirun $major.$middle.$minor \033[92;1m FAILED \033[0m is too old, 1.8.1 at least required" + fi +fi