#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | foam-extend: Open Source CFD
# \\ / O peration | Version: 4.0
# \\ / A nd | Web: http://www.foam-extend.org
# \\/ M anipulation | For copyright notice see file Copyright
#------------------------------------------------------------------------------
# License
# This file is part of foam-extend.
#
# foam-extend is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# foam-extend is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with foam-extend. If not, see .
#
# Script
# doc/buildInstructions/Windows/README.txt
#
# Description
# Environment setup and build instructions for MinGW-based Windows builds.
#
# Author:
# Cesare Guardino, Alstom Power Ltd., (2015)
#
#------------------------------------------------------------------------------
1. INTRODUCTION
===============
It is strongly recommended to install all required systems tools and utilities
in a directory with no embedded white spaces. You can skip some steps if you
already have the correct tools installed on your system.
2. INSTRUCTIONS FOR BUILDING ON WINDOWS
=======================================
1) Download and install 7-Zip (see reference list below). This is necessary to
be able to unzip the rest of the required packages mentioned in later steps.
2) Download and install wget, CMake, Git, MinGW-w64, ParaView, PExports, Java,
Subversion, Python (see reference list below). Note that some components
(for example PExports and GMake) may already be available in other packages
(such as Strawberry Perl), although you need to be careful of the
version numbers.
3) Download and install MSYS (see reference list below). If this is your first
use of MSYS, create a file fstab in c/MinGW/msys/1.0/etc with single-line contents:
c:/mingw /mingw
This mounts your home directory (this assumes you have installed MSYS to the default
c:/MinGW directory). From Windows, you will find your home directory under
c:/MinGW/msys/1.0/home/
4) Download the foam-extend 4.0 source code using Git:
git clone -b nextRelease http://git.code.sf.net/p/foam-extend/foam-extend-3.2 foam-extend-4.0
5) Open a new MSYS shell and chdir to your foam-extend-4.0 source directory.
6) Edit the user-modifiable entries in etc/bashrc.mingw to point to the
locations where you have installed the required system tools in the first two
steps (the first two functions only in bashrc.mingw). The order in which they
are added to the PATH (in the add_to_path function) is very important. The
PATH is read from left to right, so ensure OpenMPI and MinGW compiler are
prepended last to the PATH, so they are found first.
7) Source the file edited in the previous step using the command:
. etc/bashrc.mingw
(notice the dot "." command to source a file). This action sources other
files as required, and also performs a check on the versions of the installed
system tools. An example output is shown at the end of this file.
8) If "mpirun.exe" failed to run due to a missing DLL (eg. msvcr100.dll), you
may need to install the Microsoft Visual C++ 2010 Redistributable Package (see
reference list below).
9) If the version checks were all successful and printed the expected version
details, proceed with compiling the code. Run "Allwmake.mingw". This will
download and build all required third-party dependencies, build the entire
foam-extend code, and also create a stand-alone .zip package.
10) After the build has completed, you can run foam in either of two ways:
(a). From the MSYS shell. This allows use of the utility programs and shell
scripts in the bin directory (such as paraFoam). This is the recommended
approach for developers.
(b). From a standard Windows CMD.exe command prompt using the created
foam-extend-4.0-win-x64.{7z,zip} stand-alone package. This can be used on any
Windows machine without access to MSYS shells or compilers. See the
READMEBinaryPackage.txt contained within the package for further details.
3. EXTERNAL PACKAGE REFERENCE
=============================
Name : 7-Zip
Version: 9.20 (or above)
URL : http://www.7-zip.org/a/7z920-x64.msi
For : Extracting .zip and .7z files (can also be used to extract .tar.gz, .tar.bz2 etc.)
Name : CMake
Version: 3.2.3 (or above)
URL : http://www.cmake.org/files/v3.2/cmake-3.2.3-win32-x86.zip
For : Required for building metis and parmetis third-party libraries.
Name : Git
Version: 1.9.5
URL : https://git-scm.com/download/win
For : Version control system. Choose "Use Git from the Windows command prompt" and "Check out as-is. Commit as-is" in installer.
Name : Java
Version: Version 8 Update 60
URL : http://www.java.com
For : Not essential
Name : Microsoft Visual C++ 2010 Redistributable Package (x64)
Version: 2010
URL : http://www.microsoft.com/en-us/download/details.aspx?id=14632
For : msvcr100.dll required by OpenMPI
Name : MinGW-w64
Version: 4.8.2 (or above)
URL : http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.8.2/threads-win32/seh/x86_64-4.8.2-release-win32-seh-rt_v3-rev3.7z/download
For : Windows port of GCC C/C++ compiler (also includes Fortran compiler).
Name : MSYS
Version: Latest
URL : http://www.mingw.org/download/installer
For : Provides Linux-like emulation shell and utilities (eg. find, grep, ls, make etc.) and tools (eg. bison, flex, m4, yacc etc.).
Only the "mingw-developer-toolkit" and "msys-base" is required, DO NOT download ming32-* compiler packages (we use MinGW-w64 instead).
Assuming you installed this to the default /c/MinGW directory, you will need to "cp -p make.exe gmake.exe" in /c/MinGW/msys/1.0/bin (unless have Strawberry Perl).
Name : OpenMPI
Version: 1.6.1 (or above)
URL : http://www.open-mpi.org/software/ompi/v1.6/downloads/OpenMPI_v1.6.1-1_win64.exe
For : Bulding and running OpenMPI applications. Do not add to PATH in installer.
Name : ParaView
Version: 4.3.1 (or above)
URL : http://www.paraview.org/download/
For : Graphically visualising foam results.
Name : PExports
Version: 0.44 (or above)
URL : http://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/pexports-0.46/pexports-0.46-mingw32-bin.tar.xz/download
For : Extracting symbols from OpenMPI DLLs to pass to dlltool.exe (supplied in MinGW-w64 package). Move directory "bin" to "pexports-0.46" after unpacking.
Name : Python
Version: 2.7
URL : https://www.python.org/download/releases/2.7/
For : Running Python scripts. Not essential
Name : Strawberry Perl
Version: 5.20.2.1 (or above)
URL : http://strawberryperl.com/download/5.20.2.1/strawberry-perl-5.20.2.1-64bit.msi
For : Running Perl scripts, "pexports.exe" and "gmake.exe" utilities
Name : Subversion
Version: 1.8.13
URL : http://sourceforge.net/projects/win32svn/files/1.8.13/
For : Version control system. Not essential.
Name : wget
Version: 1.11.4-1 (or above)
URL : http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-bin.zip, http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-dep.zip, http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-doc.zip
For : Automatically downloading files from internet (eg. for use in automated build scripts)
4. EXAMPLE OUTPUT FROM SOURCING etc/bashrc.mingw
================================================
$ . etc/bashrc.mingw
Setting environment variables for user-defined installed system tools and utilities ...
Sourcing: /c/Users/UserName/Git/foam-extend-3.2/etc/bashrc
Sourcing: /c/Users/UserName/Git/foam-extend-3.2/etc/prefs.sh.mingw
Sourcing: /c/Users/UserName/Git/foam-extend-3.2/etc/settings.sh
MESQUITE_DIR is initialized to: /c/Users/UserName/Git/foam-extend-3.2/ThirdParty/packages/mesquite-2.1.2
METIS_DIR is initialized to: /c/Users/UserName/Git/foam-extend-3.2/ThirdParty/packages/metis-5.1.0
PARMETIS_DIR is initialized to: /c/Users/UserName/Git/foam-extend-3.2/ThirdParty/packages/parmetis-4.0.3
PARMGRIDGEN_DIR is initialized to: /c/Users/UserName/Git/foam-extend-3.2/ThirdParty/packages/ParMGridGen-1.0
LIBCCMIO_DIR is initialized to:
SCOTCH_DIR is initialized to: /c/Users/UserName/Git/foam-extend-3.2/ThirdParty/packages/scotch_6.0.0
SCOTCH_DIR is initialized to: /c/Users/UserName/Git/foam-extend-3.2/ThirdParty/packages/scotch_6.0.0
CMAKE_DIR is initialized to:
M4_DIR is initialized to:
BISON_DIR is initialized to:
FLEX_DIR is initialized to: /C/MinGW/msys/1.0//bin/..
ZOLTAN_DIR is initialized to:
PYTHON_DIR is initialized to:
PYFOAM_DIR is initialized to:
PYFOAM_SITE_DIR is initialized to: /c/Users/UserName/Git/foam-extend-3.2/ThirdParty/PyFoamSiteScripts
HWLOC_DIR is initialized to:
QT_DIR is initialized to:
PARAVIEW_DIR is initialized to:
LLVM_DIR is initialized to:
MESA_DIR is initialized to:
Sourcing: /c/Users/UserName/Git/foam-extend-3.2/etc/aliases.sh
Adding user-defined installed system tools to PATH ...
Setting OpenMPI environment settings ...
Checking versions of installed system tools (based on PATH) ...
7-Zip: /c/Program Files/7-Zip/7z.exe [ 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18]
Bison: /bin/bison.exe [bison (GNU Bison) 2.4.2]
CMake: /c/Programs/cmake-3.2.3-win32-x86/bin/cmake.exe [cmake version 3.2.3]
Flex: /bin/flex.exe [flex 2.5.35]
G++: /c/Programs/mingw64/bin/g++.exe [g++.exe (x86_64-win32-seh-rev3, Built by MinGW-W64 project) 4.8.2]
GCC: /c/Programs/mingw64/bin/gcc.exe [gcc.exe (x86_64-win32-seh-rev3, Built by MinGW-W64 project) 4.8.2]
GMake: /c/Programs/strawberry-perl-5.20.2.1-64bit/c/bin/gmake.exe [GNU Make 4.0.90]
Git: /c/Programs/Git/cmd/git.exe [git version 1.9.5.msysgit.1]
Java: /c/ProgramData/Oracle/Java/javapath/java.exe [java version "1.8.0_45"]
M4: /bin/m4.exe [m4 (GNU M4) 1.4.16]
Make: /bin/make.exe [GNU Make 3.81]
MinGW-w64: /c/Programs/mingw64
OpenMPI: /c/Programs/OpenMPI_v1.6.1-x64/bin/mpirun.exe [mpirun.exe (OpenRTE) 1.6.1]
PEexports: /c/Programs/pexports-0.46/bin/pexports.exe [PExports 0.44 Copyright 1998, Anders Norlander]
ParaView: /c/Programs/ParaView-4.3.1
Perl: /bin/perl.exe [ This is perl, v5.8.8 built for msys-64int]
Python: /c/Programs/Python27/python.exe [Python 2.7.9]
Subversion: /c/Programs/svn-win32-1.8.13/bin/svn.exe [svn, version 1.8.13 (r1667537)]
Vim: /bin/vim.exe [VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Mar 19 2011 15:37:04)]
Wget: /c/Programs/wget-1.11.4-1/bin/wget.exe [GNU Wget 1.11.4 Copyright (C) 2008 Free Software Foundation, Inc.]
FOAM_INST_DIR=/c/Users/UserName/Git
WM_PROJECT_DIR=/c/Users/UserName/Git/foam-extend-3.2
WM_OSTYPE=MSWindows
ENVIRONMENT SETUP COMPLETE.