mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-11 06:18:09 +00:00
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:
committed by
Thomas Krijnen
parent
435eb7ae10
commit
4a85e5e7a5
@@ -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 ^
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
```
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user