diff --git a/src/blenderbim/docs/devs/installation.rst b/src/blenderbim/docs/devs/installation.rst index 44377c2a28..928406fd1e 100644 --- a/src/blenderbim/docs/devs/installation.rst +++ b/src/blenderbim/docs/devs/installation.rst @@ -152,8 +152,8 @@ changes, you'll need to fix your setup manually. But this is relatively rare. that has a similar functionality. -Distro installation -------------------- +Packaged installation +--------------------- - **Arch Linux**: `Stable `__. - **Chocolatey on Windows**: `Unstable `__. diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst b/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst index 502dea2bbf..4000ca5522 100644 --- a/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst +++ b/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst @@ -143,7 +143,10 @@ and run your script using the **Text > Run Script** menu or by clicking on the interface. `Read more `_. + Compiling from source --------------------- -TODO +Advanced developers may want to compile IfcOpenShell. Refer to the +:doc:`IfcOpenShell installation guide <../ifcopenshell/installation>` for +instructions. diff --git a/src/ifcopenshell-python/docs/ifcopenshell.rst b/src/ifcopenshell-python/docs/ifcopenshell.rst index 03bc090cc1..ab41e5479e 100644 --- a/src/ifcopenshell-python/docs/ifcopenshell.rst +++ b/src/ifcopenshell-python/docs/ifcopenshell.rst @@ -1,13 +1,20 @@ IfcOpenShell ============ -This documentation is free software! You are free to contribute and help write -this document. +IfcOpenShell is an open source (LGPL-3.0-or-later) software library for working +with the Industry Foundation Classes (IFC) file format. Extensive geometric +support is implemented for the IFC releases IFC2x3 TC1 and IFC4 Add2 TC1. +Support for parsing is provided for IFC4x1, IFC4x2, and the IFC4x3 release +candidates. Extending with support for arbitrary IFC schemas is possible at +compile-time when using C++ and at run-time when using Python. .. toctree:: + :hidden: :maxdepth: 1 :caption: Contents: + ifcopenshell/installation + Indices and tables ------------------ diff --git a/src/ifcopenshell-python/docs/ifcopenshell/installation.rst b/src/ifcopenshell-python/docs/ifcopenshell/installation.rst new file mode 100644 index 0000000000..c7355dda69 --- /dev/null +++ b/src/ifcopenshell-python/docs/ifcopenshell/installation.rst @@ -0,0 +1,267 @@ +Installation +============ + +You will need: + +- `Git `__ +- `CMake `__ (3.1.3 or newer) + +IfcOpenShell depends on: + +- `Boost `__ +- (Optional) `OpenCascade `__ - for building IfcGeom + For converting IFC representation items into BRep solids and tessellated meshes +- (Optional) `OpenCOLLADA `__ - + for IfcConvert to be able to write tessellated Collada (.dae) files +- (Optional) `SWIG `__ and `Python + `__ - for building the IfcOpenShell Python interface + and use in the BlenderBIM Add-on +- (Optional) `HDF5 `__ - for caching + geometry using the HDF5 format +- (Optional) `3ds Max SDK + `__ - for building the + 3ds Max plug-in. All recent versions of 3ds Max (2014 and newer) are 64-bit + only, so a 64-bit installation is assumed. + +Compiling on Linux +------------------ + +The following instructions are for Ubuntu, modify as required for other +operating systems. GCC (4.7 or newer) or Clang (any version) is required. + +.. seealso:: + + The `nix/build-all.py `__ + script can be experimented with and studied for pointers for other operating + systems. Note that this script is not currently meant to be used for a + typical IfcOpenShell workspace setup. + +1. Fetch the latest source code, including all submodules. + + :: + + $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git + + .. warning:: + + The path where the source code is cloned to can contain spaces but non-ASCII + characters are very likely to cause problems with the build. + +2. Install basic dependencies: + + :: + + $ sudo apt-get install git cmake gcc g++ libboost-all-dev libcgal-dev + +3. Install OpenCascade Technology (OCCT). + + :: + + $ sudo apt-get install libocct-data-exchange-dev libocct-draw-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev + + .. seealso:: + + If OCCT is not available, you can `manually compile OCCT + `__. + + Alternatively you may use OpenCascade Community Edition (OCE) but it may lag behind OCCT so is not recommended. + + :: + + $ sudo apt-get install liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev liboce-visualization-dev liboce-ocaf-lite-dev + + You may also manually compile OCE: + + :: + + $ sudo apt-get install libftgl-dev libtbb2 libtbb-dev libgl1-mesa-dev libfreetype6-dev + $ git clone https://github.com/tpaviot/oce.git + $ cd oce + $ mkdir build && cd build + $ cmake .. + # Replace X with number of CPU cores + 1 + $ make -j X + $ sudo make install + +4. For building IfcConvert with COLLADA (.dae) support (on by default), OpenCOLLADA is needed: + + :: + + $ sudo apt-get install libpcre3-dev libxml2-dev + $ git clone https://github.com/KhronosGroup/OpenCOLLADA.git + $ cd OpenCOLLADA + # Using a known good revision, but HEAD should work too: + $ git checkout 064a60b65c2c31b94f013820856bc84fb1937cc6 + $ mkdir build && cd build + $ cmake .. + # Replace X with number of CPU cores + 1 + $ make -j X + $ sudo make install + +5. For building the IfcPython wrapper (on by default), SWIG and Python development are needed: + + :: + + $ sudo apt-get install python-all-dev swig + +6. For building support for HDF5 caching (off by default), install dependencies: + + :: + + $ sudo apt-get install libhdf5-dev libaec-dev zlibc + +7. Compile IfcOpenShell itself. + + :: + + $ cd /path/to/IfcOpenShell + $ mkdir build && cd build + # Customise the compile options to suit your environment + # Check all paths are valid for your environment + $ cmake ../cmake \ + -DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/ \ + -DOCC_INCLUDE_DIR=/usr/include/ \ + + # Optional Collada support + -COLLADA_SUPPORT=On + -DOPENCOLLADA_INCLUDE_DIR="/usr/local/include/opencollada" \ + -DOPENCOLLADA_LIBRARY_DIR="/usr/local/lib/opencollada" \ + -DPCRE_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/ \ + + # Optional HDF5 support + -DHDF5_SUPPORT=On + -DHDF5_LIBRARIES="/usr/local/hdf5/lib/libhdf5_cpp.so;/usr/local/hdf5/lib/libhdf5.so;/usr/lib64/libz.so;/usr/lib64/libsz.so;/usr/lib64/libaec.so" \ + -DHDF5_INCLUDE_DIR="/usr/local/hdf5/include" \ + + -DCGAL_INCLUDE_DIR=/usr/include \ + -DGMP_INCLUDE_DIR=/usr/include \ + -DMPFR_INCLUDE_DIR=/usr/include \ + -DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \ + -DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu + # Replace X with number of CPU cores + 1 + $ make -j X + # Optionally install to the system + $ sudo make install + + +Compiling on MacOS +------------------ + +GCC (4.7 or newer) or Clang (any version) is required. + +1. Fetch the latest source code, including all submodules. + + :: + + $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git + + .. warning:: + + The path where the source code is cloned to can contain spaces but non-ASCII + characters are very likely to cause problems with the build. + +2. Install all dependencies using `Homebrew `__ + + :: + + $ brew install boost swig cmake ftgl cgal gmp libaec opencascade + +3. Build IfcOpenShell with flags for Homebrew dependencies (``/usr/local/``) + + :: + + $ cd /path/to/IfcOpenShell + $ mkdir build && cd build + $ cmake ../cmake -DOCC_LIBRARY_DIR=/usr/local/lib/ \ + -DOCC_INCLUDE_DIR=/usr/local/include/opencascade/ \ + -DCOLLADA_SUPPORT=0 \ + -DCGAL_INCLUDE_DIR=/usr/local/include/ \ + -DGMP_LIBRARY_DIR=/usr/local/lib/ \ + -DMPFR_LIBRARY_DIR=/usr/local/lib/ + # Replace X with number of CPU cores + 1 + $ make -j X -lboost_options + +Compiling on Windows (Visual Studio) +------------------------------------ + +This is for users of `Visual Studio `__ 2008 to +2019 (2022 not yet supported by dependency CMake) with C++ toolset (or `Visual +C++ Build Tools `__). + +1. Fetch the latest source code, including all submodules. + + :: + + $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git + + .. warning:: + + The path where the source code is cloned to can contain spaces but non-ASCII + characters are very likely to cause problems with the build. + +2. Assuming Visual Studio 2015 x64 environment variables set, build dependencies + and run cmake. + + :: + + $ cd IfcOpenShell\win + $ build-deps.cmd + $ run-cmake.bat + +3. Open and build the solution file in Visual Studio: + + :: + + $ ..\build-vs2015-x64\IfcOpenShell.sln + + As the scripts default to using the ``RelWithDebInfo`` configuration, and a + freshly created solution by CMake defaults to ``Debug``, make sure to switch the + used build configuration. Build the ``INSTALL`` project (right-click -> Project + Only) to deploy the headers and binaries into a single location if + wanted/needed. + + Alternatively, one can use the utility batch file(s) to build and install the + project easily from the command-line (installing a project will build it + also, if required): + + :: + + $ install-ifcopenshell.bat + +.. seealso:: + + For more information on configuring a Windows compilation see the `Windows + Readme + `__. + +Compiling on Windows (MSYS2 + MinGW) +------------------------------------ + +This is for users of `MSYS2 `__ and `MinGW +`__. + +1. Fetch the latest source code, including all submodules. + + :: + + $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git + + .. warning:: + + The path where the source code is cloned to can contain spaces but non-ASCII + characters are very likely to cause problems with the build. + +2. Start the MSYS2 Shell and then: + + :: + + $ cd IfcOpenShell/win + $ ./build-deps.sh + $ ./run-cmake.sh + $ ./install-ifcopenshell.sh + +.. seealso:: + + For more information on configuring a Windows compilation see the `Windows + Readme + `__.