diff --git a/doc/buildInstructions/ArchLinux/ArchLinux_Raspberry_Pi.txt b/doc/buildInstructions/ArchLinux/ArchLinux_Raspberry_Pi.txt new file mode 100644 index 000000000..2ca018ac0 --- /dev/null +++ b/doc/buildInstructions/ArchLinux/ArchLinux_Raspberry_Pi.txt @@ -0,0 +1,146 @@ +Below are the build instructions for Arch Linux over the Raspberry Pi + +These instructions assume that your Arch Linux installation is up and running on +the Raspberry Pi with full network access. If not, please visit the following +Web sites for further instructions. As always, Google will also be your friend. +https://www.raspberrypi.org/documentation/ +https://wiki.archlinux.org/index.php/Raspberry_Pi + + +* Update your Arch Linux installation: + + sudo pacman -Syu + +* Install required packages: + + pacman -S git gcc cmake bison flex make openmpi --needed base-devel + +* Create the foam-extend installation directory: + +These instructions assume that you install in the default location, which is +~/foam/ . Create this folder with: + + mkdir ~/foam + +* Obtain and unpack source code (if you read this, you probably already have): + +The recommended way is to get the source code through git source code +management system. This way, you can get updates and bugfixes easily by running +"git pull". To install into the default location run: + + cd ~/foam + git clone git://git.code.sf.net/p/foam-extend/foam-extend-3.2 + +* For Arch Linux, you need to customize your file etc/prefs.sh in order to enable + the usage of system-provided packages, and to enable the compilation of other. + + Here is a list of commands that will do just that. You can copy/paste + the following block of commands in a control terminal in order to make + the necessary adjustments. You will need to be located at the root of your + foam-extend-3.2 installation for those commands to work. + + ### - Start to copy commands here ########################################### + # +cd ~/foam/foam-extend-3.2 + + # Create a prefs.sh file +cp etc/prefs.sh-EXAMPLE etc/prefs.sh + + # Create a patch file +cat <<'EOF' >> patch.txt +--- etc/prefs.sh-EXAMPLE 2015-11-23 22:54:50.341631348 -0500 ++++ etc/prefs.sh 2015-12-05 13:31:02.967676779 -0500 +@@ -36,7 +36,7 @@ + + # Specify system compiler + # ~~~~~~~~~~~~~~~~~~~~~~~ +-#compilerInstall=System ++compilerInstall=System + #compilerInstall=FOAM + + # Specify system openmpi +@@ -46,14 +46,14 @@ + # The other openmpi related variables will be initialized using + # the command mpicc --showme: + # +-#export WM_MPLIB=SYSTEMOPENMPI +-#export OPENMPI_DIR=path_to_system_installed_openmpi +-#export OPENMPI_BIN_DIR=$OPENMPI_DIR/bin +-# +-#export OPENMPI_LIB_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:libdirs`" +-#export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`" +-#export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`" +-#export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`" ++export WM_MPLIB=SYSTEMOPENMPI ++export OPENMPI_DIR=/usr ++export OPENMPI_BIN_DIR=$OPENMPI_DIR/bin ++# ++export OPENMPI_LIB_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:libdirs`" ++export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`" ++export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`" ++export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`" + + # Specify system installed ThirdParty packages/libraries + # NB: The packages installed under $WM_THIRD_PARTY_DIR +@@ -201,7 +201,6 @@ + # For AllMake.stage1 + #export WM_THIRD_PARTY_USE_GCC_492=1 + #export WM_THIRD_PARTY_USE_GCC_484=1 +-#export WM_THIRD_PARTY_USE_GCC_474=1 + #export WM_THIRD_PARTY_USE_GCC_463=1 + #export WM_THIRD_PARTY_USE_GCC_451=1 + #export WM_THIRD_PARTY_USE_GCC_445=1 +@@ -209,7 +208,8 @@ + #export WM_THIRD_PARTY_USE_M4_1416=1 + #export WM_THIRD_PARTY_USE_BISON_27=1 + #export WM_THIRD_PARTY_USE_FLEX_2535=1 +-export WM_THIRD_PARTY_USE_CMAKE_322=1 ++#export WM_THIRD_PARTY_USE_CMAKE_322=1 ++unset WM_THIRD_PARTY_USE_CMAKE_322 + + # + # For AllMake.stage2 +EOF + + # Patch the file prefs.sh +patch -p0 < patch.txt + + # Cleanup +rm patch.txt + + # You are done + # + ### - Stop to copy commands here ########################################### + ############################################################################ + + +* Set environment variables: + + cd ~/foam/foam-extend-3.2 + . etc/bashrc + +* Before compiling on the Raspberry Pi 2: + +Even though the Raspberry Pi2 has a more onboard RAM memory (1 GB), it cannot +compile some parts of foam-extend in parallel without borrowing some virtual +memory (swap). Depending on your system configuration and the amount of enabled +services on your Raspberry Pi, you might even ran out of memory completely. So +it is recommended not to compile foam-extend in parallel unless you keep an eye +regularly on the compilation process and adjust your environment variable +WM_NCOMPPROCS accordingly so you can compile some libraries/applications in +parallel and some others using just 1 core. + + export WM_NCOMPPROCS=1 # or maybe 2 + +* Compile: + + # This will take a very long time but it will compile completely + ./Allwmake.firstInstall + + +* Create user directory: + + mkdir -p $FOAM_RUN + + +And you are ready to start. diff --git a/doc/buildInstructions/Debian/Raspbian/Raspbian_Jessie.txt b/doc/buildInstructions/Debian/Raspbian/Raspbian_Jessie.txt new file mode 100644 index 000000000..503de0225 --- /dev/null +++ b/doc/buildInstructions/Debian/Raspbian/Raspbian_Jessie.txt @@ -0,0 +1,151 @@ +Below are the build instructions for Raspbian Jessie (November 2015) + +These instructions assume that your Raspbian installation is up and running with +full network access. If not, please visit the following Web sites for further +instructions. As always, Google will also be your friend. +https://www.raspberrypi.org/documentation/ +https://www.raspberrypi.org/downloads/raspbian/ + +* Update your Raspbian installation: + + sudo apt-get update + sudo apt-get upgrade + +* Install required packages: + + sudo apt-get install git gcc cmake bison flex make build-essential \ + bison zlib1g-dev qt4-dev-tools libqt4-dev libopenmpi-dev openmpi-bin \ + rpm libncurses-dev libxt-dev libboost-system-dev libboost-thread-dev \ + libgmp-dev libmpfr-dev + +* Create the foam-extend installation directory: + +These instructions assume that you install in the default location, which is +~/foam/ . Create this folder with: + + mkdir ~/foam + +* Obtain and unpack source code (if you read this, you probably already have): + +The recommended way is to get the source code through git source code +management system. This way, you can get updates and bugfixes easily by running +"git pull". To install into the default location run: + + cd ~/foam + git clone git://git.code.sf.net/p/foam-extend/foam-extend-3.2 + +* For Raspbian, you need to customize your file etc/prefs.sh in order to enable + the usage of system-provided packages, and to enable the compilation of other. + + Here is a list of commands that will do just that. You can copy/paste + the following block of commands in a control terminal in order to make + the necessary adjustments. You will need to be located at the root of your + foam-extend-3.2 installation for those commands to work. + + ### - Start to copy commands here ########################################### + # +cd ~/foam/foam-extend-3.2 + + # Create a prefs.sh file +cp etc/prefs.sh-EXAMPLE etc/prefs.sh + + # Create a patch file +cat <<'EOF' >> patch.txt +--- etc/prefs.sh-EXAMPLE 2015-11-26 05:01:05.676022832 +0000 ++++ etc/prefs.sh 2015-12-05 17:27:58.100579669 +0000 +@@ -36,8 +36,9 @@ + + # Specify system compiler + # ~~~~~~~~~~~~~~~~~~~~~~~ +-#compilerInstall=System ++compilerInstall=System + #compilerInstall=FOAM ++#WM_COMPILER=Gcc49 + + # Specify system openmpi + # ~~~~~~~~~~~~~~~~~~~~~~ +@@ -46,14 +47,14 @@ + # The other openmpi related variables will be initialized using + # the command mpicc --showme: + # +-#export WM_MPLIB=SYSTEMOPENMPI +-#export OPENMPI_DIR=path_to_system_installed_openmpi +-#export OPENMPI_BIN_DIR=$OPENMPI_DIR/bin +-# +-#export OPENMPI_LIB_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:libdirs`" +-#export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`" +-#export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`" +-#export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`" ++export WM_MPLIB=SYSTEMOPENMPI ++export OPENMPI_DIR=/usr ++export OPENMPI_BIN_DIR=$OPENMPI_DIR/bin ++# ++export OPENMPI_LIB_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:libdirs`" ++export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`" ++export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`" ++export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`" + + # Specify system installed ThirdParty packages/libraries + # NB: The packages installed under $WM_THIRD_PARTY_DIR +@@ -201,7 +202,6 @@ + # For AllMake.stage1 + #export WM_THIRD_PARTY_USE_GCC_492=1 + #export WM_THIRD_PARTY_USE_GCC_484=1 +-#export WM_THIRD_PARTY_USE_GCC_474=1 + #export WM_THIRD_PARTY_USE_GCC_463=1 + #export WM_THIRD_PARTY_USE_GCC_451=1 + #export WM_THIRD_PARTY_USE_GCC_445=1 +@@ -209,7 +209,8 @@ + #export WM_THIRD_PARTY_USE_M4_1416=1 + #export WM_THIRD_PARTY_USE_BISON_27=1 + #export WM_THIRD_PARTY_USE_FLEX_2535=1 +-export WM_THIRD_PARTY_USE_CMAKE_322=1 ++#export WM_THIRD_PARTY_USE_CMAKE_322=1 ++unset WM_THIRD_PARTY_USE_CMAKE_322 + + # + # For AllMake.stage2 +EOF + + # Patch the file prefs.sh +patch -p0 < patch.txt + + # Cleanup +rm patch.txt + + # You are done + # + ### - Stop to copy commands here ########################################### + ############################################################################ + + +* Set environment variables: + + cd ~/foam/foam-extend-3.2 + . etc/bashrc + +* Before compiling on the Raspberry Pi 2: + +Even though the Raspberry Pi2 has a more onboard RAM memory (1 GB), it cannot +compile some parts of foam-extend in parallel without borrowing some virtual +memory (swap). Depending on your system configuration and the amount of enabled +services on your Raspberry Pi, you might even ran out of memory completely. So +it is recommended not to compile foam-extend in parallel unless you keep an eye +regularly on the compilation process and adjust your environment variable +WM_NCOMPPROCS accordingly so you can compile some libraries/applications in +parallel and some others using just 1 core. + + export WM_NCOMPPROCS=1 # or maybe 2 + +* Compile: + + # This will take a very long time but it will compile completely + ./Allwmake.firstInstall + + +* Create user directory: + + mkdir -p $FOAM_RUN + + +And you are ready to start. diff --git a/doc/buildInstructions/Ubuntu/Ubuntu_12.04_and_13.10 b/doc/buildInstructions/Debian/Ubuntu/Ubuntu_12.04_and_13.10 similarity index 100% rename from doc/buildInstructions/Ubuntu/Ubuntu_12.04_and_13.10 rename to doc/buildInstructions/Debian/Ubuntu/Ubuntu_12.04_and_13.10 diff --git a/doc/buildInstructions/Ubuntu/Ubuntu_14.04 b/doc/buildInstructions/Debian/Ubuntu/Ubuntu_14.04 similarity index 100% rename from doc/buildInstructions/Ubuntu/Ubuntu_14.04 rename to doc/buildInstructions/Debian/Ubuntu/Ubuntu_14.04 diff --git a/etc/bashrc b/etc/bashrc index 2418dbd49..f597336ba 100755 --- a/etc/bashrc +++ b/etc/bashrc @@ -288,6 +288,16 @@ Linux) export WM_LDFLAGS='-m64' ;; + armv7l) + WM_ARCH=linuxARM7 + export WM_COMPILER_LIB_ARCH=32 + export WM_CC='gcc' + export WM_CXX='g++' + export WM_CFLAGS='-fPIC -mfloat-abi=hard' + export WM_CXXFLAGS='-fPIC -mfloat-abi=hard' + export WM_LDFLAGS='-mfloat-abi=hard' + ;; + *) echo Unknown processor type `uname -m` for Linux ;; diff --git a/etc/cshrc b/etc/cshrc index e9c8cddbf..0821f1836 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -228,6 +228,16 @@ case Linux: setenv WM_LDFLAGS '-m64' breaksw + armv7l) + setenv WM_ARCH linuxARM7 + setenv WM_COMPILER_LIB_ARCH 32 + setenv WM_CC 'gcc' + setenv WM_CXX 'g++' + setenv WM_CFLAGS '-fPIC -mfloat-abi=hard' + setenv WM_CXXFLAGS '-fPIC -mfloat-abi=hard' + setenv WM_LDFLAGS '-mfloat-abi=hard' + ;; + default: echo Unknown processor type `uname -m` for Linux breaksw diff --git a/src/OSspecific/POSIX/signals/sigFpe.H b/src/OSspecific/POSIX/signals/sigFpe.H index c85965dac..8d4e3dc67 100644 --- a/src/OSspecific/POSIX/signals/sigFpe.H +++ b/src/OSspecific/POSIX/signals/sigFpe.H @@ -46,7 +46,7 @@ SourceFiles #include "OSspecific.H" #include -#if defined(linux) || defined(linuxAMD64) || defined(linuxIA64) +#if defined(linux) || defined(linuxAMD64) || defined(linuxIA64) || defined(linuxARM7) # define LINUX #endif diff --git a/src/foam/containers/Lists/UList/UListI.H b/src/foam/containers/Lists/UList/UListI.H index 295cd25e8..61d8f664a 100644 --- a/src/foam/containers/Lists/UList/UListI.H +++ b/src/foam/containers/Lists/UList/UListI.H @@ -90,7 +90,7 @@ inline void Foam::UList::checkStart(const label start) const if (start<0 || (start && start>=size_)) { FatalErrorIn("UList::checkStart(const label)") - << "start " << start << " out of range 0 ... " << max(size_-1, 0) + << "start " << start << " out of range 0 ... " << max(label(size_-1), label(0)) << abort(FatalError); } } diff --git a/wmake/rules/linuxARM7Gcc/c b/wmake/rules/linuxARM7Gcc/c new file mode 100644 index 000000000..5be3206f8 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/c @@ -0,0 +1,16 @@ +.SUFFIXES: .c .h + +cWARN = -Wall + +cc = gcc + +include $(RULES)/c$(WM_COMPILE_OPTION) + +cFLAGS = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC + +ctoo = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $$SOURCE -o $@ + +LINK_LIBS = $(cDBUG) + +LINKLIBSO = $(cc) -shared +LINKEXE = $(cc) -Xlinker --add-needed -Xlinker -z -Xlinker nodefs diff --git a/wmake/rules/linuxARM7Gcc/c++ b/wmake/rules/linuxARM7Gcc/c++ new file mode 100644 index 000000000..8251ef4cf --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/c++ @@ -0,0 +1,21 @@ +.SUFFIXES: .C .cxx .cc .cpp + +c++WARN = -Wall -Wextra -Wno-unused-parameter -Wold-style-cast + +CC = g++ + +include $(RULES)/c++$(WM_COMPILE_OPTION) + +ptFLAGS = -DNoRepository -ftemplate-depth=100 + +c++FLAGS = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC + +Ctoo = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $$SOURCE -o $@ +cxxtoo = $(Ctoo) +cctoo = $(Ctoo) +cpptoo = $(Ctoo) + +LINK_LIBS = $(c++DBUG) + +LINKLIBSO = $(CC) $(c++FLAGS) -shared -Xlinker --add-needed -Xlinker --no-as-needed +LINKEXE = $(CC) $(c++FLAGS) -Xlinker --add-needed -Xlinker --no-as-needed diff --git a/wmake/rules/linuxARM7Gcc/c++Debug b/wmake/rules/linuxARM7Gcc/c++Debug new file mode 100644 index 000000000..19bdb9c33 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/c++Debug @@ -0,0 +1,2 @@ +c++DBUG = -ggdb3 -DFULLDEBUG +c++OPT = -O0 -fdefault-inline diff --git a/wmake/rules/linuxARM7Gcc/c++Opt b/wmake/rules/linuxARM7Gcc/c++Opt new file mode 100644 index 000000000..434c17fa5 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/c++Opt @@ -0,0 +1,2 @@ +c++DBUG = +c++OPT = -O3 -floop-optimize -falign-loops -falign-labels -falign-functions -falign-jumps -fprefetch-loop-arrays -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard diff --git a/wmake/rules/linuxARM7Gcc/c++Prof b/wmake/rules/linuxARM7Gcc/c++Prof new file mode 100644 index 000000000..3bda4dad5 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/c++Prof @@ -0,0 +1,2 @@ +c++DBUG = -pg +c++OPT = -O2 diff --git a/wmake/rules/linuxARM7Gcc/cDebug b/wmake/rules/linuxARM7Gcc/cDebug new file mode 100644 index 000000000..72b638f45 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/cDebug @@ -0,0 +1,2 @@ +cDBUG = -ggdb -DFULLDEBUG +cOPT = -O1 -fdefault-inline -finline-functions diff --git a/wmake/rules/linuxARM7Gcc/cOpt b/wmake/rules/linuxARM7Gcc/cOpt new file mode 100644 index 000000000..0362b0932 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/cOpt @@ -0,0 +1,2 @@ +cDBUG = +cOPT = -O3 -floop-optimize -falign-loops -falign-labels -falign-functions -falign-jumps -fprefetch-loop-arrays -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard diff --git a/wmake/rules/linuxARM7Gcc/cProf b/wmake/rules/linuxARM7Gcc/cProf new file mode 100644 index 000000000..ca3ac9bf5 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/cProf @@ -0,0 +1,2 @@ +cDBUG = -pg +cOPT = -O2 diff --git a/wmake/rules/linuxARM7Gcc/general b/wmake/rules/linuxARM7Gcc/general new file mode 100644 index 000000000..376c61484 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/general @@ -0,0 +1,9 @@ +CPP = cpp -traditional-cpp $(GFLAGS) +LD = ld + +PROJECT_LIBS = -l$(WM_PROJECT) -ldl + +include $(GENERAL_RULES)/standard + +include $(RULES)/c +include $(RULES)/c++ diff --git a/wmake/rules/linuxARM7Gcc/mplibOPENMPI b/wmake/rules/linuxARM7Gcc/mplibOPENMPI new file mode 100644 index 000000000..834d2d3e2 --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/mplibOPENMPI @@ -0,0 +1,3 @@ +PFLAGS = -DOMPI_SKIP_MPICXX +PINC = -I$(MPI_ARCH_PATH)/include +PLIBS = -L$(MPI_ARCH_PATH)/lib -lmpi diff --git a/wmake/rules/linuxARM7Gcc/mplibSYSTEMOPENMPI b/wmake/rules/linuxARM7Gcc/mplibSYSTEMOPENMPI new file mode 100644 index 000000000..cce2cd0ef --- /dev/null +++ b/wmake/rules/linuxARM7Gcc/mplibSYSTEMOPENMPI @@ -0,0 +1,3 @@ +PFLAGS = -DOMPI_SKIP_MPICXX +PINC = $(OPENMPI_COMPILE_FLAGS) +PLIBS = -L$(MPI_ARCH_PATH)/lib/openmpi -lmpi