Skip to content

Instantly share code, notes, and snippets.

@kkremitzki
Last active January 30, 2017 02:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kkremitzki/324fe2c837e99be7ee4adf22bebc02c4 to your computer and use it in GitHub Desktop.
Save kkremitzki/324fe2c837e99be7ee4adf22bebc02c4 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Released under GPL v2.0
# bernd@bimstatik.org
# based on script for vagrant box from FreeCAD source, https://github.com/FreeCAD/FreeCAD/blob/master/vagrant/FreeCAD.sh
# modified Jan 28 2016 by Kurt Kremitzki
# tested on Ubuntu Xenial = 16.04
cd
INSTALL_PREFIX=/opt/local/FreeCAD-0.17-py3
[[ ! -d "build_FreeCAD" ]] && mkdir build_FreeCAD
cd build_FreeCAD
base_dir=$(pwd)
package_list=" doxygen \
libboost1.58-dev \
libboost-filesystem1.58-dev \
libboost-program-options1.58-dev \
libboost-python1.58-dev \
libboost-regex1.58-dev \
libboost-signals1.58-dev \
libboost-system1.58-dev \
libboost-thread1.58-dev \
libcoin80v5 \
libcoin80-dev \
libeigen3-dev \
libpyside-dev \
libqtcore4 \
libshiboken-dev \
libxerces-c-dev \
libxmu-dev \
libxmu-headers \
libxmu6 \
libxmuu-dev \
libxmuu1 \
pyside-tools \
python-dev \
python3-dev \
python3-pyside \
python-pyside \
python-matplotlib \
python3-matplotlib \
qt4-dev-tools \
qt4-qmake \
libqtwebkit-dev \
shiboken \
calculix-ccx \
swig "
sudo apt-get update
sudo apt-get install -y dictionaries-common
sudo apt-get install -y $package_list
sudo apt-get install -y python-pivy
sudo apt-get install -y git
sudo apt-get install -y cmake
sudo apt-get install -y g++
sudo apt-get install -y libfreetype6-dev
# sudo apt-get install -y tcl8.5 # to run DRAWEXE of occt, but it does not run either
sudo apt-get install -y tcl8.5-dev tk8.5-dev
sudo apt-get install -y automake # netgen
sudo apt-get install -y libtogl-dev
sudo apt-get install -y libhdf5-dev
# get MED
cd "$base_dir"
[[ ! -d "med" ]] && mkdir med
cd med
[[ ! -d "libMED" ]] && git clone https://github.com/berndhahnebach/libMED.git
# get VTK
cd "$base_dir"
[[ ! -d "vtk" ]] && mkdir vtk
cd vtk
[[ ! -f "VTK-7.0.0.tar.gz" ]] && wget http://www.vtk.org/files/release/7.0/VTK-7.0.0.tar.gz
tar xzf VTK-7.0.0.tar.gz
# get OCCT
cd "$base_dir"
[[ ! -d "occt" ]] && mkdir occt
cd occt
[[ ! -f "occt.tgz" ]] && wget "http://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=b00770133187b83761e651df50051b2fa3433858;sf=tgz" && mv "index.html?p=occt.git;a=snapshot;h=b00770133187b83761e651df50051b2fa3433858;sf=tgz" occt.tgz
tar xzf occt.tgz
cd occt-b007701
grep -v vtkRenderingFreeTypeOpenGL src/TKIVtk/EXTERNLIB >& /tmp/EXTERNLIB
cp /tmp/EXTERNLIB src/TKIVtk/EXTERNLIB
grep -v vtkRenderingFreeTypeOpenGL src/TKIVtkDraw/EXTERNLIB >& /tmp/EXTERNLIB
cp /tmp/EXTERNLIB src/TKIVtkDraw/EXTERNLIB
# get Netgen
cd "$base_dir"
[[ ! -d "netgen" ]] && mkdir netgen
cd netgen
[[ ! -d "Netgen" ]] && git clone https://github.com/berndhahnebach/Netgen
# get FreeCAD
cd "$base_dir"
[[ ! -d "freecad" ]] && mkdir freecad
cd freecad
[[ ! -d "FreeCAD" ]] && git clone https://github.com/looooo/FreeCAD -b py3-21
# building MED
cd "$base_dir"
cd med
[[ ! -d "build" ]] && mkdir build
cd build
cmake ../libMED -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX
make -j$(nproc)
sudo make install
# building VTK
cd "$base_dir"
cd vtk
[[ ! -d "build" ]] && mkdir build
cd build
cmake ../VTK-7.0.0 -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -DVTK_Group_Rendering:BOOL=OFF -DVTK_Group_StandAlone:BOOL=ON -DVTK_RENDERING_BACKEND=None
make -j$(nproc)
sudo make install
# building OCCT
cd "$base_dir"
cd occt
[[ ! -d "build" ]] && mkdir build
cd build
cmake ../occt-b007701 -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -DUSE_VTK:BOOL=OFF
make -j$(nproc)
sudo make install
# building Netgen
cd "$base_dir"
cd netgen
cd Netgen/netgen-5.3.1
./configure --prefix=$INSTALL_PREFIX --with-tcl=/usr/lib/tcl8.5 --with-tk=/usr/lib/tk8.5 --enable-occ --with-occ=$INSTALL_PREFIX --enable-shared --enable-nglib CXXFLAGS="-DNGLIB_EXPORTS -std=gnu++11"
make -j$(nproc)
sudo make install
# copy libsrc, FreeCAD needs it
cd "$base_dir"
cd netgen
sudo cp -rf Netgen/netgen-5.3.1/libsrc $INSTALL_PREFIX/libsrc
# building FreeCAD
cd "$base_dir"
cd freecad
[[ ! -d "build" ]] && mkdir build
cd build
# no oce-dev packages, no netgen
# cmake ../FreeCAD -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX \
# -DOCC_INCLUDE_DIR=$INSTALL_PREFIX/include/opencascade
# with oce-dev installed, no netgen
# cmake ../FreeCAD -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -DFREECAD_USE_OCC_VARIANT="Official Version" \
# -DOCC_INCLUDE_DIR=$INSTALL_PREFIX/include/opencascade -DOCC_LIBRARY=$INSTALL_PREFIX/lib/libTKernel.so
# no oce-dev packages, with netgen
# cmake ../FreeCAD -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -DBUILD_FEM_NETGEN=1 -DCMAKE_CXX_FLAGS="-DNETGEN_V5" \
# -DNETGEN_ROOT=$INSTALL_PREFIX -DOCC_INCLUDE_DIR=$INSTALL_PREFIX/include/opencascade
# with oce-dev installed, with netgen
cmake ../FreeCAD -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -DBUILD_FEM_NETGEN=1 \
-DCMAKE_CXX_FLAGS="-DNETGEN_V5" -DNETGEN_ROOT=$INSTALL_PREFIX -DFREECAD_USE_OCC_VARIANT="Official Version" \
-DOCC_INCLUDE_DIR=$INSTALL_PREFIX/include/opencascade -DOCC_LIBRARY=$INSTALL_PREFIX/lib/libTKernel.so \
-DPYTHON_BASENAME=.cpython-35m-x86_64-linux-gnu -DPYTHON_SUFFIX=.cpython-35m-x86_64-linux-gnu \
-DPYTHON_EXECUTABLE=/usr/bin/python3.5m -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so
make -j$(nproc)
sudo make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment