Commit 96ea0d59 authored by Daniel Wortmann's avatar Daniel Wortmann

Modified configure script to store environment variables before calling cmake

parent 4738606f
......@@ -6,19 +6,6 @@ endif()
project(FLEUR LANGUAGES C Fortran)
#some variables might be set in the environment
set(FLEUR_LIBRARIES ${FLEUR_LIBRARIES} $ENV{FLEUR_LIBRARIES})
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${FLEUR_Fortran_FLAGS} $ENV{CMAKE_Fortran_FLAGS}")
if (DEFINED ENV{FLEUR_USE_SERIAL})
set(FLEUR_USE_SERIAL ENV{FLEUR_USE_SERIAL})
else()
set(FLEUR_USE_SERIAL TRUE)
endif()
include("cmake/CompilerConfig.txt")
include("cmake/ReportConfig.txt")
......
......@@ -4,109 +4,29 @@
read -r -d '' known_machines << EOM
IFF -- cluster @ PGI of FZJ
JURECA -- @JSC
JUQUEEN -- @JSC
CLAIX -- @RWTH
MARCONI -- @CINECA
EOM
function configure_machine(){
if [ "$machine" = "JURECA" ]
then
echo "JURECA configuration used"
if module list 2>&1 |grep -q -i intel
then
echo "Intel toolchain used"
if module list 2>&1| grep -q Python &&
module list 2>&1| grep -q ELPA
#module list 2>&1| grep -q HDF5
then
echo "All required modules load loaded"
else
echo "You have to load the required modules"
echo "See and/or source $DIR/cmake/machines/JURECA/intelsource.sh"
exit
fi
cp $DIR/cmake/machines/JURECA/JURECA.cmake config.cmake
elif module list 2>&1 |grep -q PGI
then
echo "PGI toolchain used"
if module list 2>&1| grep -q MVAPICH2 &&
[ -n "${MAGMA_ROOT}" ] &&
[ -n "${XML2_ROOT}" ]
then
echo "All required modules loaded, all variables set"
else
echo "Not all modules are loaded"
echo "See and/or source $DIR/cmake/machines/JURECA/pgisource.sh"
echo "And set the variables XML2_ROOT and MAGMA_ROOT"
exit
fi
cp $DIR/cmake/machines/JURECA/JURECAGPU.cmake config.cmake
else
echo "You have to load the correct modules for compiling"
echo " Look for files to source in $DIR/cmake/machines/JURECA"
exit
fi
# JUQUEEN
elif [ "$machine" = "JUQUEEN" ]
then
echo "JUQUEEN configuration used"
if module list 2>&1| grep -q hdf5 &&
module list 2>&1| grep -q scalapack
then
echo "All required modules load loaded"
else
echo "You have to load the required modules"
echo "'source $DIR/cmake/machines/JUQUEEN/xlfsource.sh' should help"
exit
fi
cp $DIR/cmake/machines/JUQUEEN/JUQUEEN.cmake config.cmake
#IFF linux cluster
elif [ "$machine" = "IFF" ]
then
echo "IFF cluster configuration used"
cp $DIR/cmake/machines/IFF.cmake config.cmake
#RWTH cluster
elif [ "$machine" = "CLAIX" ]
if [ "$machine" = "AUTO" ]
then
echo "CLAIX@RWTH configuration used"
if ! module list 2>&1| grep -q intelmpi
then
echo "Please use intelmpi, e.g. do a module switch openmpi intelmpi"
exit
fi
cp $DIR/cmake/machines/CLAIX.cmake config.cmake
module load LIBRARIES
elif [ "$machine" = "MARCONI" ]
then
if ! module list 2>&1| grep -q " intel\/" || ! module list 2>&1| grep -q " intelmpi" ||! module list 2>&1| grep -q cmake
then
echo "Load the modules needed to compile: intel,intelmpi,cmake"
exit
fi
cp $DIR/cmake/machines/MARCONI.cmake config.cmake
elif [ "$machine" = "AUTO" ]
then
if [ -r ../config.cmake ]
then
echo "Using AUTO-mode with user provided config.cmake"
cp ../config.cmake .
else
echo "No machine specific settings used"
echo "GOOD LUCK!"
fi
echo "No machine specific settings used"
echo "GOOD LUCK!"
else
if [ -r $DIR/cmake/machines/${machine}.cmake ]
if [ -r $DIR/cmake/machines/$machine.sh ]
then
cp $DIR/cmake/machines/${machine}.cmake config.cmake
echo "Using config for: $machine"
. $DIR/cmake/machines/$machine.sh
else
echo "No valid machine configuration specified"
exit
fi
fi
fi
}
FC=mpif90
FLEUR_INCLUDEDIR="/opt/include"
FLEUR_LIBRARIES="-L/opt/lib;-lxcf03;-lxc;-lhdf5_fortran;-lhdf5;-ldl;-L/usr/lib;-L/usr/lib/x86_64-linux-gnu;-lxml2;-lscalapack-openmpi;-lblacsF77init-openmpi;-lblacs-openmpi;-llapack;-lblas"
FC=mpiifort
FLEUR_LIBRARIES="-lxml2;-lmkl_scalapack_lp64;-lmkl_blacs_intelmpi_lp64;-mt_mpi"
if module list 2>&1 |grep -q -i intel
then
echo "Intel toolchain used"
FC=mpif90
CC=mpicc
FLEUR_LIBRARIES="-lmkl_scalapack_lp64;-lmkl_blacs_intelmpi_lp64"
elif module list 2>&1 |grep -q PGI
then
echo "PGI toolchain used"
FC=mpif90
CC=mpicc
FLEUR_INCLUDEDIR="$XML2_ROOT/include"
FLEUR_LIBRARIES="-lstdc++;-L$MKLROOT/lib/intel64;-lmkl_scalapack_lp64;-lmkl_intel_lp64;-lmkl_pgi_thread;-lmkl_core;-lmkl_blacs_intelmpi_lp64"
fi
help=0
CLI_LIBDIR=""
CLI_INCLUDEDIR=""
while [ $# -gt 0 ]
do
case "$1" in
-h) help=1;;
-help) help=1;;
-b) backup=1;;
-backup) backup=1;;
-g) gitupdate=1;;
-gitupdate) gitupdate=1;;
-t) all_tests=1;;
-all_tests) all_tests=1;;
-l) shift;label=$1;;
-m) shift;machine=$1;;
-cmake) shift;cmake=$1;;
-external) shift;external_lib="$external_lib $1";;
-hdf5) shift; CLI_FLEUR_USE_HDF5=$1;;
-wannier) shift; CLI_FLEUR_USE_WANNIER=$1;;
-mpi) shift; CLI_FLEUR_USE_MPI=$1;;
-magma) shift; CLI_FLEUR_USE_MAGMA=$1;;
-gpu) shift; CLI_FLEUR_USE_GPU=$1;;
-libraries) shift; CLI_LIBRARIES=$1;;
-libdir) shift; CLI_LIBDIR="$CLI_LIBDIR $1";;
-flags) shift; CLI_FLAGS=$1;;
-includedir) shift; CLI_INCLUDEDIR="$CLI_INCLUDEDIR $1";;
-elpa_openmp) CLI_ELPA_OPENMP=1;;
-cmake_opts) shift;CMAKE_OPTIONS=$1;;
-make) make_directly=1;;
-d) debug=1;;
-*) error="Unkown argument";;
*) break;; # terminate while loop
esac
shift
done
if [ $# -gt 0 ]
then
if [ "$machine" = "" ]
then
machine=$1;shift
else
error="You specified the -m switch and gave an additional MACHINE argument"
fi
fi
if [ $# -gt 0 ]
then
if [ "$label" = "" ]
then
label=$1;shift
else
error="You specified the -l switch and gave an additional LABEL argument"
fi
fi
if [ $# -gt 0 ]
then
error="Extra unkown arguments"
fi
#check if -h or -help was given as argument
if [ $help -gt 0 ]
then
echo "USAGE: configure.sh [options] [MACHINE] [label]"
echo "
The following command line options are supported:
-h : print this help-page
-m # : specify the machine to build on (see below for possible options)
This can also be specified without -m as a first argument
-l # : label for the build. It will be attached to the name of the build directory.
This option can also be specified as second argument without -l
-d : build a debugging version of FLEUR (adds .debug to label)
-g : do a git pull first if this is a git version
-t : generate all tests including those that run longer
-b : backup an old build directory if present
To help the script finding a proper configuration you should
provide the name of a specific machine to compile on.
Currently known machine configurations are:
"
echo " $known_machines"
echo "
If you do not specify the machine the AUTO option will be used in which some
defaults are tested. It might work if your machine is not one of those known.
You might also want to add your configuration to the file
cmake/machines.sh in this case :-)
In addition you can modify some environment variables:
FC -- name of Fortran compiler
CC -- name of C compiler
FLEUR_LIBRARIES -- list of linker arguments i.e. '-L/lib;-lbla'
CMAKE_Fortran_FLAGS -- list of compiler options i.e. '-r8'"
echo "
By specifying a label you can have different build directories.
The label will be added to the 'build' directory name."
exit 1
fi
if [ "$error" != "" ]
then
echo $error
echo "ERROR in calling configure. Please use -h for help on usage"
exit 1
fi
# script to store environment settings for later use in cmake
echo "set(compile_user $USER)" >config.cmake
#Set options for linker
#1. if environment variable FLEUR_LIBRARIES is present use it
#2. if CLI_LIBRARIES is present, use it
#3. if FLEUR_LIBDIR is present, add these directories with -L option
if [ "$FLEUR_LIBRARIES" ]
then
cmake_lib="$FLEUR_LIBRARIES"
fi
if [ "$CLI_LIBRARIES" ]
then
if [ "cmake_lib" ]
then
cmake_lib="$CLI_LIBRARIES:$cmake_lib"
else
cmake_lib="$CLI_LIBRARIES"
fi
fi
#check the FLEUR_LIBDIR variable
for lib in $FLEUR_LIBDIR $CLI_LIBDIR
do
if [ "cmake_lib" ]
then
cmake_lib="-L$lib:$cmake_lib"
else
cmake_lib="-L$lib"
fi
done
echo "set(FLEUR_LIBRARIES $cmake_lib)" >>config.cmake
#Set compiler flags
#1. If CMAKE_Fortran_FLAGS is given use that
#2. If CLI_FLAGS is given use that
#3. If FLEUR_INCLUDEDIR/CLI_INCLUDEDIR is given, add -I options for these
if [ "$CMAKE_Fortan_FLAGS" ]
then
cmake_flags="$CMAKE_Fortran_FLAGS"
fi
if [ "$CLI_FLAGS" ]
then
cmake_flags="$CMAKE_Fortran_FLAGS cmake_flags"
fi
for lib in $FLEUR_INCLUDEDIR $CLI_INCLUDEDIR
do
cmake_flags="-I$lib cmake_flags"
done
echo "set(CMAKE_Fortran_FLAGS \"$cmake_flags\")" >>config.cmake
#Set options to turn on/off specific features
if [ "$FLEUR_USE_HDF5" ] || [ "$FLEUR_USE_SERIAL" ] || [ "$FLEUR_USE_MPI" ] || [ "$FLEUR_USE_WANNIER" ] || [ "$FLEUR_USE_MAGMA" ] || [ "$FLEUR_USE_GPU" ]
then
echo "WARNING"
echo "The FLEUR_USE_XXX environment variables are no longer supported, use the command line options instead"
fi
if [ "$CLI_USE_HDF5" ]
then
echo "set(CLI_FLEUR_USE_HDF5 $CLI_USE_HDF5)" >>config.cmake
fi
if [ "$CLI_USE_MPI" ]
then
echo "set(CLI_FLEUR_USE_MPI $CLI_USE_MPI)" >>config.cmake
fi
if [ "$CLI_USE_WANNIER" ]
then
echo "set(CLI_FLEUR_USE_WANNIER $CLI_USE_WANNIER)" >>config.cmake
fi
if [ "$CLI_USE_MAGMA" ]
then
echo "set(CLI_FLEUR_USE_MAGMA $CLI_USE_MAGMA)" >>config.cmake
fi
if [ "$CLI_USE_GPU" ]
then
echo "set(CLI_FLEUR_USE_GPU $CLI_USE_GPU)" >>config.cmake
fi
if [ "$CLI_USE_SERIAL" ]
then
echo "set(FLEUR_USE_SERIAL $CLI_USE_SERIAL)" >>config.cmake
else
echo "set(FLEUR_USE_SERIAL TRUE)" >>config.cmake
fi
if [ "$CLI_ELPA_OPENMP" ]
then
echo "set(CLI_ELPA_OPENMP 1)" >>config.cmake
fi
......@@ -3,19 +3,15 @@ try_compile(FLEUR_USE_ELPA ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/t
LINK_LIBRARIES ${FLEUR_LIBRARIES})
if (NOT FLEUR_USE_ELPA)
set(STORE_FLAGS "${CMAKE_Fortran_FLAGS}")
if (DEFINED ENV{ELPA_MODULES})
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -I$ENV{ELPA_MODULES}")
endif()
if (DEFINED ENV{ELPA_LIB})
set(TEST_LIBRARIES "-L$ENV{ELPA_LIB};-lelpa_openmp;-lstdc++;${FLEUR_LIBRARIES}")
if (DEFINED CLI_ELPA_OPENMP)
set(TEST_LIBRARIES "${FLEUR_LIBRARIES};-lelpa_openmp")
else()
set(TEST_LIBRARIES "${FLEUR_LIBRARIES};-lelpa")
endif()
try_compile(FLEUR_USE_ELPA ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/test_ELPA.f90
LINK_LIBRARIES ${TEST_LIBRARIES})
if (FLEUR_USE_ELPA)
set(FLEUR_LIBRARIES "${TEST_LIBRARIES}")
else()
set(CMAKE_Fortran_FLAGS "${STORE_FLAGS}")
endif()
endif()
......
#Check if we can compile with GPU
if ($ENV{FLEUR_USE_GPU})
if (${CLI_FLEUR_USE_GPU})
#No check is done
set(FLEUR_USE_GPU TRUE)
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ta=tesla:cuda8.0,cc60 -Mcuda:kepler+ -Minfo=accel -acc ")
......
......@@ -2,28 +2,15 @@
try_compile(FLEUR_USE_HDF5 ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/test_HDF5.f90
LINK_LIBRARIES ${FLEUR_LIBRARIES}
)
#now try to find the library using HDF5_ROOT variable
#now try to find the library by adding the -l stuff to the FLEUR_LIBRARIES
if (NOT FLEUR_USE_HDF5)
if (DEFINED ENV{HDF5_ROOT})
find_path(HDF5_INCLUDE hdf5.mod PATHS $ENV{HDF5_ROOT} PATH_SUFFIXES include NO_DEFAULT_PATH)
find_path(HDF5_LIB libhdf5_fortran.a PATHS $ENV{HDF5_ROOT} PATH_SUFFIXES lib NO_DEFAULT_PATH)
if (HDF5_LIB)
set(TEST_LIBRARIES "-L${HDF5_LIB};-lhdf5_fortran;-lhdf5;${FLEUR_LIBRARIES}")
endif()
if (HDF5_INCLUDE)
set(STORE_FLAGS ${CMAKE_Fortran_FLAGS})
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -I${HDF5_INCLUDE}")
endif()
try_compile(FLEUR_USE_HDF5 ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/test_HDF5.f90
set(TEST_LIBRARIES "${FLEUR_LIBRARIES};-lhdf5_fortran;-lhdf5")
try_compile(FLEUR_USE_HDF5 ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/test_HDF5.f90
LINK_LIBRARIES ${TEST_LIBRARIES}
)
if (NOT FLEUR_USE_HDF5)
set(CMAKE_Fortran_FLAGS ${STORE_FLAGS})
else()
set(FLEUR_LIBRARIES "-L${HDF5_LIB};-lhdf5_fortran;-lhdf5;${FLEUR_LIBRARIES}")
set(FLEUR_MPI_LIBRARIES "-L${HDF5_LIB};-lhdf5_fortran;-lhdf5;${FLEUR_MPI_LIBRARIES}")
endif()
endif()
if (FLEUR_USE_HDF5)
set(FLEUR_LIBRARIES ${TEST_LIBRARIES})
endif()
endif()
#now try the find_package feature
......@@ -55,8 +42,8 @@ endif()
message("HDF5 Library found:${FLEUR_USE_HDF5}")
if (DEFINED ENV{FLEUR_USE_HDF5})
if (ENV{FLEUR_USE_HDF5})
if (DEFINED CLI_FLEUR_USE_HDF5})
if (CLI_FLEUR_USE_HDF5})
if (NOT FLEUR_USE_HDF5)
message(FATAL_ERROR "You asked for HDF5 but cmake couldn't find it. Please set HDF5_ROOT and or give additional compiler/linker flags")
endif()
......
#First check if we can compile with MAGMA
if ($ENV{FLEUR_USE_MAGMA})
if (${CLI_FLEUR_USE_MAGMA})
message("Set FLEUR_USE_MAGMA to environment, skipping test")
set(FLEUR_USE_MAGMA $ENV{FLEUR_USE_MAGMA})
set(FLEUR_USE_MAGMA ${CLI_FLEUR_USE_MAGMA})
else()
try_compile(FLEUR_USE_MAGMA ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/test_MAGMA.f90
LINK_LIBRARIES ${FLEUR_LIBRARIES}
......
......@@ -5,8 +5,8 @@ LINK_LIBRARIES ${FLEUR_LIBRARIES}
message("MPI Library found:${FLEUR_USE_MPI}")
if (DEFINED ENV{FLEUR_USE_MPI})
if (ENV{FLEUR_USE_MPI})
if (DEFINED CLI_FLEUR_USE_MPI)
if (${CLI_FLEUR_USE_MPI})
if (NOT FLEUR_USE_MPI)
message(FATAL_ERROR "You asked for MPI but cmake couldn't find it. Please check your Fortran compiler settings")
endif()
......
......@@ -4,8 +4,8 @@ try_compile(FLEUR_USE_WANN4 ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/
)
message("Wannier90-4 1.2 Library found:${FLEUR_USE_WANN4}")
if (DEFINED ENV{FLEUR_USE_WANNIER})
if (ENV{FLEUR_USE_WANNIER})
if (DEFINED CLI_FLEUR_USE_WANNIER)
if (${CLI_FLEUR_USE_WANNIER})
if (NOT FLEUR_USE_WANN4)
message(FATAL_ERROR "You asked for Wannier90 but cmake couldn't find it. Please check your Fortran compiler settings")
endif()
......
......@@ -4,8 +4,8 @@ try_compile(FLEUR_USE_WANN5 ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/
)
message("Wannier90-5 1.2 Library found:${FLEUR_USE_WANN5}")
if (DEFINED ENV{FLEUR_USE_WANNIER})
if (ENV{FLEUR_USE_WANNIER})
if (DEFINED CLI_FLEUR_USE_WANNIER)
if (${CLI_FLEUR_USE_WANNIER})
if (NOT FLEUR_USE_WANN5)
message(FATAL_ERROR "You asked for Wannier90 but cmake couldn't find it. Please check your Fortran compiler settings")
endif()
......
......@@ -5,8 +5,8 @@ try_compile(FLEUR_USE_WANN ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/cmake/tests/t
message("Wannier90 1.2 Library found:${FLEUR_USE_WANN}")
if (DEFINED ENV{FLEUR_USE_WANNIER})
if (ENV{FLEUR_USE_WANNIER})
if (DEFINED CLI_FLEUR_USE_WANNIER)
if (${CLI_FLEUR_USE_WANNIER})
if (NOT FLEUR_USE_WANN)
message(FATAL_ERROR "You asked for Wannier90 but cmake couldn't find it. Please check your Fortran compiler settings")
endif()
......
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
#These contain functions to be used later on...
. $DIR/cmake/machines.sh
. $DIR/external/install_external.sh
#variables to store arguments
#process arguments
help=0
all_tests=0
machine=""
label=""
......@@ -10,99 +13,14 @@ backup=0
gitupdate=0
debug=0
error=""
while [ $# -gt 0 ]
do
case "$1" in
-h) help=1;;
-help) help=1;;
-b) backup=1;;
-backup) backup=1;;
-g) gitupdate=1;;
-gitupdate) gitupdate=1;;
-t) all_tests=1;;
-all_tests) all_tests=1;;
-l) shift;label=$1;;
-m) shift;machine=$1;;
-cmake) shift;cmake=$1;;
-d) debug=1;;
-*) error="Unkown argument";;
*) break;; # terminate while loop
esac
shift
done
if [ $# -gt 0 ]
then
if [ "$machine" = "" ]
then
machine=$1;shift
else
error="You specified the -m switch and gave an additional MACHINE argument"
fi
fi
if [ $# -gt 0 ]
then
if [ "$label" = "" ]
then
label=$1;shift
else
error="You specified the -l switch and gave an additional LABEL argument"
fi
fi
if [ $# -gt 0 ]
then
error="Extra unkown arguments"
fi
external_lib=""
echo "------------ Welcome to the FLEUR configuration script -------------"
if [ "$error" != "" ]
then
echo $error
echo "ERROR in calling configure. Please use -h for help on usage"
exit 1
fi
. $DIR/cmake/process_arguments.sh
. $DIR/cmake/machines.sh
#check if -h or -help was given as argument
if [ $help -gt 0 ]
then
echo "USAGE: configure.sh [options] [MACHINE] [label]"
echo "
The following command line options are supported:
-h : print this help-page
-m # : specify the machine to build on (see below for possible options)
This can also be specified without -m as a first argument
-l # : label for the build. It will be attached to the name of the build directory.
This option can also be specified as second argument without -l
-d : build a debugging version of FLEUR (adds .debug to label)
-g : do a git pull first if this is a git version
-t : generate all tests including those that run longer
-b : backup an old build directory if present
To help the script finding a proper configuration you should
provide the name of a specific machine to compile on.
Currently known machine configurations are:
"
echo " $known_machines"
echo "
If you do not specify the machine the AUTO option will be used in which some
defaults are tested. It might work if your machine is not one of those known.
You might also want to add your configuration to the file
cmake/machines.sh in this case :-)
In addition you can modify some environment variables:
FC -- name of Fortran compiler
CC -- name of C compiler
FLEUR_LIBRARIES -- list of linker arguments i.e. '-L/lib;-lbla'
CMAKE_Fortran_FLAGS -- list of compiler options i.e. '-r8'"
echo "
By specifying a label you can have different build directories.
The label will be added to the 'build' directory name."
exit 1
fi
#Check if we are using the git version and update if pull was used as an argument
if test -d $DIR/.git
......@@ -124,12 +42,6 @@ then
fi
#include a configfile if present
if test -r config.sh
then
. config.sh
fi
#Name of the build directory
if [ -n "$label" ]
then
......@@ -182,7 +94,16 @@ else
cmake="cmake"
fi
${cmake} -Dall_tests=$all_tests -DCMAKE_BUILD_TYPE=$BUILD $DIR 2>&1 |tee configure.out
# compile external libraries if needed
for library in ${external_lib}
do
compile_external
done
. $DIR/cmake/store_environment.sh
${cmake} $CMAKE_OPTIONS -Dall_tests=$all_tests -DCMAKE_BUILD_TYPE=$BUILD $DIR 2>&1 |tee configure.out
if [ -r $buildname/Makefile ]
then
......@@ -191,6 +112,12 @@ then
echo "You might want to call the configure.sh script with -h"
else
echo "Configuration finished"
echo "You should change into directory $buildname "
echo "run 'make' or 'make -j'"
if [ "$make_directly" ]
then
cd $buildname
make -j
else
echo "You should change into directory $buildname "
echo "run 'make' or 'make -j'"
fi
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment