Port: Raspberry Pi. Author: Martin Beaudoin. Merge: Hrvoje Jasak.
This commit is contained in:
commit
b4e1b80409
19 changed files with 383 additions and 2 deletions
146
doc/buildInstructions/ArchLinux/ArchLinux_Raspberry_Pi.txt
Normal file
146
doc/buildInstructions/ArchLinux/ArchLinux_Raspberry_Pi.txt
Normal file
|
@ -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.
|
151
doc/buildInstructions/Debian/Raspbian/Raspbian_Jessie.txt
Normal file
151
doc/buildInstructions/Debian/Raspbian/Raspbian_Jessie.txt
Normal file
|
@ -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.
|
10
etc/bashrc
10
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
|
||||
;;
|
||||
|
|
10
etc/cshrc
10
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
|
||||
|
|
|
@ -46,7 +46,7 @@ SourceFiles
|
|||
#include "OSspecific.H"
|
||||
#include <signal.h>
|
||||
|
||||
#if defined(linux) || defined(linuxAMD64) || defined(linuxIA64)
|
||||
#if defined(linux) || defined(linuxAMD64) || defined(linuxIA64) || defined(linuxARM7)
|
||||
# define LINUX
|
||||
#endif
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ inline void Foam::UList<T>::checkStart(const label start) const
|
|||
if (start<0 || (start && start>=size_))
|
||||
{
|
||||
FatalErrorIn("UList<T>::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);
|
||||
}
|
||||
}
|
||||
|
|
16
wmake/rules/linuxARM7Gcc/c
Normal file
16
wmake/rules/linuxARM7Gcc/c
Normal file
|
@ -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
|
21
wmake/rules/linuxARM7Gcc/c++
Normal file
21
wmake/rules/linuxARM7Gcc/c++
Normal file
|
@ -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
|
2
wmake/rules/linuxARM7Gcc/c++Debug
Normal file
2
wmake/rules/linuxARM7Gcc/c++Debug
Normal file
|
@ -0,0 +1,2 @@
|
|||
c++DBUG = -ggdb3 -DFULLDEBUG
|
||||
c++OPT = -O0 -fdefault-inline
|
2
wmake/rules/linuxARM7Gcc/c++Opt
Normal file
2
wmake/rules/linuxARM7Gcc/c++Opt
Normal file
|
@ -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
|
2
wmake/rules/linuxARM7Gcc/c++Prof
Normal file
2
wmake/rules/linuxARM7Gcc/c++Prof
Normal file
|
@ -0,0 +1,2 @@
|
|||
c++DBUG = -pg
|
||||
c++OPT = -O2
|
2
wmake/rules/linuxARM7Gcc/cDebug
Normal file
2
wmake/rules/linuxARM7Gcc/cDebug
Normal file
|
@ -0,0 +1,2 @@
|
|||
cDBUG = -ggdb -DFULLDEBUG
|
||||
cOPT = -O1 -fdefault-inline -finline-functions
|
2
wmake/rules/linuxARM7Gcc/cOpt
Normal file
2
wmake/rules/linuxARM7Gcc/cOpt
Normal file
|
@ -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
|
2
wmake/rules/linuxARM7Gcc/cProf
Normal file
2
wmake/rules/linuxARM7Gcc/cProf
Normal file
|
@ -0,0 +1,2 @@
|
|||
cDBUG = -pg
|
||||
cOPT = -O2
|
9
wmake/rules/linuxARM7Gcc/general
Normal file
9
wmake/rules/linuxARM7Gcc/general
Normal file
|
@ -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++
|
3
wmake/rules/linuxARM7Gcc/mplibOPENMPI
Normal file
3
wmake/rules/linuxARM7Gcc/mplibOPENMPI
Normal file
|
@ -0,0 +1,3 @@
|
|||
PFLAGS = -DOMPI_SKIP_MPICXX
|
||||
PINC = -I$(MPI_ARCH_PATH)/include
|
||||
PLIBS = -L$(MPI_ARCH_PATH)/lib -lmpi
|
3
wmake/rules/linuxARM7Gcc/mplibSYSTEMOPENMPI
Normal file
3
wmake/rules/linuxARM7Gcc/mplibSYSTEMOPENMPI
Normal file
|
@ -0,0 +1,3 @@
|
|||
PFLAGS = -DOMPI_SKIP_MPICXX
|
||||
PINC = $(OPENMPI_COMPILE_FLAGS)
|
||||
PLIBS = -L$(MPI_ARCH_PATH)/lib/openmpi -lmpi
|
Reference in a new issue