MSYS build scripts and instructions (#99) and warning fixes

* Preliminary MSYS2 + MinGW build scripts and instructions.

* CMakeLists.txt: MinGW tweaks, enforce C++03, suppress warnings for now.

* Fix some GCC warnings.

* Fix unused parameter warnings coming from Ifc*.h.

* Fix warning regarding unreachable code (++jt) on MSVC.

* Add IfcParse_EXPORT for IfcInvalidTokenException

* Fix potentially uninitialized pointer variables.

* Note about OpenCASCADE cyclic dependencies fix.

* GCC warning fix: don't generate 'current_enum' variable that is only set and not used for anything ever

* Work around -Wmaybe-uninitialized warnings about boost::optional constructs. Also prevent passing of negative values for --bounds.

* Remove unused variable.

* CMakeLists.txt: ENABLE_BUILD_OPTIMIZATIONS for GCC (simply enforce -03)
This commit is contained in:
Ali Kämäräinen
2016-07-15 06:49:32 +03:00
committed by Thomas Krijnen
parent 435eb7ae10
commit 4a85e5e7a5
26 changed files with 1125 additions and 938 deletions
-1
View File
@@ -240,7 +240,6 @@ call :GitCloneOrPullRepository https://github.com/QbProg/oce-win-bundle.git "%DE
IF NOT %ERRORLEVEL%==0 GOTO :Error
cd "%DEPENDENCY_DIR%"
set OCE_BUNDLE_ROOT_PATH="%INSTALL_DIR%\oce-win-bundle"
:: NOTE Specify OCE_NO_LIBRARY_VERSION as rc.exe can fail due to long filenames and huge command-line parameter
:: input (more than 32,000 characters). Could maybe try using subst for the build dir to overcome this.
call :RunCMake -DOCE_BUILD_SHARED_LIB=0 -DOCE_INSTALL_PREFIX="%INSTALL_DIR%\oce" -DOCE_TESTING=0 ^
+86
View File
@@ -0,0 +1,86 @@
###############################################################################
# #
# This file is part of IfcOpenShell. #
# #
# IfcOpenShell is free software: you can redistribute it and/or modify #
# it under the terms of the Lesser GNU General Public License as published by #
# the Free Software Foundation, either version 3.0 of the License, or #
# (at your option) any later version. #
# #
# IfcOpenShell 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 #
# Lesser GNU General Public License for more details. #
# #
# You should have received a copy of the Lesser GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
###############################################################################
# #
# This script installs and builds IfcOpenShell's dependencies using MSYS2 #
# #
# Note that this script is currently a very bare-bones implementation #
# #
###############################################################################
set -e
# Set defaults for missing empty environment variables
if [ -z "$IFCOS_NUM_BUILD_PROCS" ]; then
IFCOS_NUM_BUILD_PROCS=$(expr $(sysctl -n hw.ncpu 2> /dev/null || cat /proc/cpuinfo | grep processor | wc -l) + 1)
fi
BUILD_DIR=build-msys
SCRIPT_DIR=`pwd "$0"`
DEPS_DIR="$SCRIPT_DIR/../deps"
[ -d $DEPS_DIR ] || mkdir -p $DEPS_DIR
INSTALL_DIR="$SCRIPT_DIR/../deps-msys-installed"
pacman --noconfirm -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-boost make swig
export PATH=/mingw64/bin/:$PATH
function git_clone_or_pull {
[ -d $2 ] || git clone $1 $2
pushd $2
git pull
popd
}
function git_clone_and_checkout_revision {
[ -d $2 ] || git clone $1 $2
pushd $2
git checkout $3
popd
}
# Use a fixed revision in order to prevent introducing breaking changes
git_clone_and_checkout_revision https://github.com/KhronosGroup/OpenCOLLADA.git "$DEPS_DIR/OpenCOLLADA" \
064a60b65c2c31b94f013820856bc84fb1937cc6
pushd "$DEPS_DIR/OpenCOLLADA"
[ -d $BUILD_DIR ] || mkdir -p $BUILD_DIR
pushd $BUILD_DIR
cmake .. -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR/OpenCOLLADA"
make -j$IFCOS_NUM_BUILD_PROCS
make install
popd
git_clone_or_pull https://github.com/tpaviot/oce.git "$DEPS_DIR/oce"
git_clone_or_pull https://github.com/QbProg/oce-win-bundle.git "$DEPS_DIR/oce/oce-win-bundle"
pushd "$DEPS_DIR/oce"
[ -d $BUILD_DIR ] || mkdir -p $BUILD_DIR
pushd $BUILD_DIR
# -DOCE_BUILD_SHARED_LIB=0
cmake .. -G "MSYS Makefiles" -DOCE_INSTALL_PREFIX="$INSTALL_DIR/oce" -DOCE_TESTING=0
make -j$IFCOS_NUM_BUILD_PROCS
make install
popd
popd
echo IfcOpenShell dependencies installed and built
+30
View File
@@ -0,0 +1,30 @@
###############################################################################
# #
# This file is part of IfcOpenShell. #
# #
# IfcOpenShell is free software: you can redistribute it and/or modify #
# it under the terms of the Lesser GNU General Public License as published by #
# the Free Software Foundation, either version 3.0 of the License, or #
# (at your option) any later version. #
# #
# IfcOpenShell 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 #
# Lesser GNU General Public License for more details. #
# #
# You should have received a copy of the Lesser GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
set -e
export PATH=/mingw64/bin/:$PATH
if [ -z "$IFCOS_NUM_BUILD_PROCS" ]; then
IFCOS_NUM_BUILD_PROCS=$(expr $(sysctl -n hw.ncpu 2> /dev/null || cat /proc/cpuinfo | grep processor | wc -l) + 1)
fi
pushd ../build-msys
/mingw64/bin/mingw32-make.exe -j$IFCOS_NUM_BUILD_PROCS
popd
+30
View File
@@ -0,0 +1,30 @@
###############################################################################
# #
# This file is part of IfcOpenShell. #
# #
# IfcOpenShell is free software: you can redistribute it and/or modify #
# it under the terms of the Lesser GNU General Public License as published by #
# the Free Software Foundation, either version 3.0 of the License, or #
# (at your option) any later version. #
# #
# IfcOpenShell 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 #
# Lesser GNU General Public License for more details. #
# #
# You should have received a copy of the Lesser GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
set -e
export PATH=/mingw64/bin/:$PATH
if [ -z "$IFCOS_NUM_BUILD_PROCS" ]; then
IFCOS_NUM_BUILD_PROCS=$(expr $(sysctl -n hw.ncpu 2> /dev/null || cat /proc/cpuinfo | grep processor | wc -l) + 1)
fi
pushd ../build-msys
make install -j$IFCOS_NUM_BUILD_PROCS
popd
+22 -9
View File
@@ -5,10 +5,18 @@ and its dependencies.
As a general guideline, `.cmd` files are non-standalone batch files that need to be run from command prompt or from
another batch file, and/or while the Visual Studio environment variables set, and `.bat` files are standalone batch
files that can also be invoked e.g. by double-clicking in the File Explorer.
files that can also be invoked e.g. by double-clicking in the File Explorer. `.sh` files are for MSYS2 + MinGW compilation.
Usage Instructions
------------------
### MSYS2 + MinGW
Building using MSYS2 + MinGW is very similar to using the Visual Studio batch files, but instead the shell scripts
are used. Note that the MSYS2 + MinGW support is currently a bit experimental. It is advised to check out the contents
of the shell scripts before using them. Note that contrary to Visual Studio, with MinGW all of the dependencies are not
built or used as static libaries. Currently Release build is used for all libraries.
### Visual Studio
Execute `build-deps.cmd` to fetch, build and install the dependencies. The batch file will print the requirements for
a successful execution. The script allows a few user-configurable build options which are listed in the usage
instructions. Either edit the script file or set these values before running the script.
@@ -78,20 +86,25 @@ Directory Structure
------------------
```
..
+---build-vs<VER>-<ARCH> - Created by run-cmake.bat, for a certain VS version and target architecture
+---deps - Created by build-deps.cmd, common for all VS versions and target architectures
+---deps-installed-vs<VER>-<ARCH> - Created by build-deps.cmd, for a certain VS version and target architecture
+---installed-vs<VER>-<ARCH> - Created by building the IFCOS's INSTALL project
+---build-* - Created by run-cmake.bat/sh, specific for a certain compiler and and target architecture
+---deps - Created by build-deps.cmd/sh, common for all compilers
+---deps-*-installed - Created by build-deps.cmd/sh, specific for a certain compiler and target architecture
+---installed-* - Created by installing the IFCOS project, specific for a certain compiler and target architecture
\---win
| build-all.cmd - Runs all of the build scripts for IFCOS and it dependencies in a row without pauses
| build-deps.cmd - Fetches and builds all needed dependencies for IFCOS
| build-deps.cmd - Fetches and builds all needed dependencies for IFCOS using Visual Studio
| build-deps.sh - Fetches and builds all needed dependencies for IFCOS using MSYS2 + MinGW
| BuildDepsCache-<ARCH>.txt - Cache file created by build-deps.cmd
| build-ifcopenshell.bat - Builds IFCOS
| build-ifcopenshell.bat - Builds IFCOS using Visual Studio
| build-ifcopenshell.sh - Builds IFCOS using MSYS2 + MinGW
| build-type-cfg.cmd - Utility file used by the build scripts
| install-ifcopenshell.bat - Builds IFCOS's INSTALL project
| install-ifcopenshell.bat - Installs/deployes IFCOS using Visual Studio.
| install-ifcopenshell.sh - Installs/deployes IFCOS using MSYS2 + MinGW.
| readme.md - This file
| run-cmake.bat - Sets environment variables for the dependencies and runs CMake for IFCOS
| run-cmake.bat - Sets environment variables for the dependencies and runs CMake for IFCOS using Visual Studio
| run-cmake.sh - Sets environment variables for the dependencies and runs CMake for IFCOS using MSYS2 + MinGW
| set-python-to-path.bat - Utility for setting PYTHONHOME (read from BuildDepsCache-<ARCH>.txt) to PATH
| vs-cfg.cmd - Utility file used by the build scripts
\---patches - Contains patches for the dependencies
\---utils - Contains various utilities for the build scripts
```
+40
View File
@@ -0,0 +1,40 @@
###############################################################################
# #
# This file is part of IfcOpenShell. #
# #
# IfcOpenShell is free software: you can redistribute it and/or modify #
# it under the terms of the Lesser GNU General Public License as published by #
# the Free Software Foundation, either version 3.0 of the License, or #
# (at your option) any later version. #
# #
# IfcOpenShell 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 #
# Lesser GNU General Public License for more details. #
# #
# You should have received a copy of the Lesser GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
set -e
export PATH=/mingw64/bin/:$PATH
BUILD_DIR=../build-msys
[ -d $BUILD_DIR ] || mkdir -p $BUILD_DIR
CMAKE_INSTALL_PREFIX=../installed-msys
pushd $BUILD_DIR
# PYTHON_INCLUDE_DIR=/mingw64/include/python2.7 \
# PYTHON_LIBRARY=/mingw64/lib/python2.7/config/libpython2.7.a \
OCC_INCLUDE_DIR=`pwd`/../deps-msys-installed/oce/include/oce/ \
OCC_LIBRARY_DIR=`pwd`/../deps-msys-installed/oce/Win64/lib/ \
OPENCOLLADA_INCLUDE_DIR=`pwd`/../deps-msys-installed/OpenCOLLADA/include/opencollada/ \
OPENCOLLADA_LIBRARY_DIR=`pwd`/../deps-msys-installed/OpenCOLLADA/lib/opencollada/ \
cmake -G "MSYS Makefiles" ../cmake -DSWIG_DIR=/usr/bin -DCMAKE_INSTALL_PREFIX=$CMAKE_INSTALL_PREFIX \
-DCMAKE_MAKE_PROGRAM=/mingw64/bin/mingw32-make.exe $@
popd