Building LuxCoreRender (legacy): Difference between revisions
No edit summary  | 
				|||
| (42 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
<b>WARNING: STARTING WITH V2.10, THOSE INSTRUCTIONS ARE OBSOLETE</b>  | |||
For up-to-date information, please refer to https://wiki.luxcorerender.org/Building_LuxCoreRender  | |||
== Windows ==  | == Windows ==  | ||
| Line 6: | Line 11: | ||
=== Static link environment ===  | === Static link environment ===  | ||
A static link environment is used to create binaries for releases.   | |||
Most libraries that LuxCore depends on are embedded into the LuxCore executables.  | |||
==== First Run ====  | ==== First Run ====  | ||
On a recent Ubuntu (e.g. 19.10), you can compile LuxCore with the following commands:  | |||
<pre>  | <pre>  | ||
sudo apt install git  | |||
git clone https://github.com/LuxCoreRender/LinuxCompile.git  | git clone https://github.com/LuxCoreRender/LinuxCompile.git  | ||
cd LinuxCompile  | cd LinuxCompile  | ||
./first_run.sh  | |||
</pre>  | </pre>  | ||
| Line 25: | Line 29: | ||
<pre>  | <pre>  | ||
cd LuxCore  | cd target-64-sse2/LuxCore-opencl/  | ||
.  | ./luxcoreui ./scenes/cornell/cornell.cfg  | ||
</pre>  | </pre>  | ||
| Line 34: | Line 38: | ||
<pre>  | <pre>  | ||
cd LuxCore  | cd LuxCore-opencl  | ||
git pull  | git pull  | ||
# Go back to LinuxCompile folder and compile  | # Go back to LinuxCompile folder and compile  | ||
cd ..  | cd ..  | ||
./build-64-sse2 LuxCore 5  | ./build-64-sse2 LuxCore-opencl 5  | ||
</pre>  | </pre>  | ||
| Line 45: | Line 49: | ||
In case you update the LuxCore repository (by using git pull), re-run the last stage (5) of the build script:  | In case you update the LuxCore repository (by using git pull), re-run the last stage (5) of the build script:  | ||
<pre>  | <pre>  | ||
./build-64-sse2 LuxCore 5  | ./build-64-sse2 LuxCore-opencl 5  | ||
</pre>  | </pre>  | ||
| Line 51: | Line 55: | ||
<pre>  | <pre>  | ||
cd LuxCore  | cd LuxCore-opencl  | ||
make -j8  | make -j8  | ||
</pre>  | </pre>  | ||
(-j<n> specifies number of threads for the compilation process)  | (-j<n> specifies number of threads for the compilation process)  | ||
The compiled binaries are in LuxCore/bin/, the compiled libraries (e.g. pyluxcore.so) are in LuxCore/lib/  | The compiled binaries are in LuxCore-opencl/bin/, the compiled libraries (e.g. pyluxcore.so) are in LuxCore-opencl/lib/  | ||
=== Ubuntu 14.04 LTS (Dynamic linking) ===  | === Ubuntu 14.04 LTS (Dynamic linking) ===  | ||
Dynamic link builds are only used for developing/debugging, not for release builds.  | |||
<pre>  | <pre>  | ||
| Line 90: | Line 96: | ||
=== Ubuntu 16.04 LTS (Dynamic linking) ===  | === Ubuntu 16.04 LTS (Dynamic linking) ===  | ||
Dynamic link builds are only used for developing/debugging, not for release builds.  | |||
<pre>  | <pre>  | ||
| Line 103: | Line 111: | ||
# Install Pillow  | # Install Pillow  | ||
sudo pip3 install pillow  | sudo pip3 install pillow  | ||
# To have Python v3.x in pyluxcore.so  | |||
sudo rm /usr/lib/x86_64-linux-gnu/libboost_python.so  | |||
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py35.so /usr/lib/x86_64-linux-gnu/libboost_python.so  | |||
# Compile LuxCore  | # Compile LuxCore  | ||
| Line 110: | Line 122: | ||
cmake -D EMBREE_SEARCH_PATH=`pwd`/../embree-2.17.1.x86_64.linux -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m .  | cmake -D EMBREE_SEARCH_PATH=`pwd`/../embree-2.17.1.x86_64.linux -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m .  | ||
make -j 8  | make -j 8  | ||
</pre>  | |||
'''NOTE: Default Boost version in Ubuntu 16.04LTS is v1.58. Any serialization related feature will not work with standard version v1.56.'''  | |||
== macOS 11+ ==  | |||
=== Install  build environment ===  | |||
Install latest Xcode and Command Line Tools for your OS version.  | |||
Install Homebrew  | |||
<pre>/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"</pre>  | |||
Install brew stuff and python3  | |||
<pre>brew install pyenv cmake bison gnu-sed gnu-tar xz libtool autoconf automake ispc slib bzip2 jpeg  | |||
PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"  | |||
PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"  | |||
pyenv init  | |||
eval "$(pyenv init -)”  | |||
#####before BigSur####  | |||
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.7.4  | |||
#####For BigSur#####  | |||
env PYTHON_CONFIGURE_OPTS="--enable-framework" CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.7.4 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)  | |||
patch needed  | |||
###################  | |||
pyenv global 3.7.4  | |||
pip install --upgrade pip  | |||
#####normal####  | |||
pip install numpy  | |||
#####BigSur####  | |||
Download wheel from here https://files.pythonhosted.org/packages/46/09/1bae812d4afa67e365d3d1dbdc0e9071ba7678611f52b49353d6104ae8ff/numpy-1.19.4-cp37-cp37m-macosx_10_9_x86_64.whl  | |||
rename to numpy-1.19.4-cp37-cp37m-macosx_11_0_x86_64.whl  | |||
pip install numpy-1.19.4-cp37-cp37m-macosx_11_0_x86_64.whl  | |||
####################  | |||
pip install pillow  | |||
pip install pyside2</pre>  | |||
For CUDA builds on MacOS 10.13 only install cuda toolkit.  | |||
https://developer.nvidia.com/cuda-10.1-download-archive-base?target_os=MacOSX&target_arch=x86_64&target_version=1013  | |||
=== Compile Dependencies ===  | |||
<pre>pyenv shell 3.7.4  | |||
git clone https://github.com/LuxCoreRender/MacOSCompileDeps.git  | |||
cd MacOSCompileDeps  | |||
./cut_deps_release</pre>  | |||
This will leave you with a MacDistFiles.tar.gz .  | |||
=== Compile LuxCore ===  | |||
<pre>git clone https://github.com/LuxCoreRender/LuxCore.git  | |||
cd LuxCore</pre>  | |||
Copy MacDistFiles.tar.gz to LuxCore root and unpack. Just double-click. or   | |||
<pre>tar xzf MacDistFiles.tar.gz</pre>  | |||
Now do  | |||
==== cmake ====  | |||
<pre>export PATH="/usr/local/opt/bison/bin:/usr/local/bin:$PATH"  | |||
DEPS_SOURCE=`pwd`/macos  | |||
mkdir build  | |||
cd  build  | |||
cmake -DOSX_DEPENDENCY_ROOT=$DEPS_SOURCE -DCMAKE_BUILD_TYPE=Release ..  | |||
make</pre>  | |||
==== Xcode ====  | |||
<pre>export PATH="/usr/local/opt/bison/bin:/usr/local/bin:$PATH"  | |||
DEPS_SOURCE=`pwd`/macos  | |||
mkdir build  | |||
cd  build  | |||
cmake -G Xcode -DOSX_DEPENDENCY_ROOT=$DEPS_SOURCE -DCMAKE_BUILD_TYPE=Release ..  | |||
</pre>  | </pre>  | ||
Open Xcode project and compile.  | |||
=== Make bundle ===  | |||
edit scripts/macos/codesign.sh to match your certificate ( something like A1CD139B9FD66DE9D474D420C1899EA96A622B9A )  | |||
run   | |||
<pre>./scripts/macos/pack_lux_osx.sh</pre>  | |||
or for XCode build  | |||
<pre>./scripts/macos/pack_lux_osx_xcode.sh</pre>  | |||
from LuxCore root.  | |||
This should end up with a distributable .dmg.  | |||
Have fun and good luck.  | |||
== Contributing ==    | == Contributing ==    | ||
Latest revision as of 13:50, 10 May 2025
WARNING: STARTING WITH V2.10, THOSE INSTRUCTIONS ARE OBSOLETE
For up-to-date information, please refer to https://wiki.luxcorerender.org/Building_LuxCoreRender
Windows
See the Readme file here: https://github.com/LuxCoreRender/WindowsCompile
Linux
Static link environment
A static link environment is used to create binaries for releases. Most libraries that LuxCore depends on are embedded into the LuxCore executables.
First Run
On a recent Ubuntu (e.g. 19.10), you can compile LuxCore with the following commands:
sudo apt install git git clone https://github.com/LuxCoreRender/LinuxCompile.git cd LinuxCompile ./first_run.sh
To test LuxCoreUI, you can now start it:
cd target-64-sse2/LuxCore-opencl/ ./luxcoreui ./scenes/cornell/cornell.cfg
Updating
To update to the latest sources, use standard git commands:
cd LuxCore-opencl git pull # Go back to LinuxCompile folder and compile cd .. ./build-64-sse2 LuxCore-opencl 5
Recompiling
In case you update the LuxCore repository (by using git pull), re-run the last stage (5) of the build script:
./build-64-sse2 LuxCore-opencl 5
In case you edit any source files and want to recompile quickly, go to the LuxCore sources directory and run make:
cd LuxCore-opencl make -j8
(-j<n> specifies number of threads for the compilation process)
The compiled binaries are in LuxCore-opencl/bin/, the compiled libraries (e.g. pyluxcore.so) are in LuxCore-opencl/lib/
Ubuntu 14.04 LTS (Dynamic linking)
Dynamic link builds are only used for developing/debugging, not for release builds.
# Install deps sudo apt-get update sudo apt-get install git cmake g++ flex bison libbz2-dev libopenimageio-dev libtiff5-dev libpng12-dev libgtk-3-dev libopenexr-dev libgl1-mesa-dev python3-dev python3-pip # Compile Boost wget https://sourceforge.net/projects/boost/files/boost/1.56.0/boost_1_56_0.tar.gz tar zxvf boost_1_56_0.tar.gz cd boost_1_56_0 ./bootstrap.sh --with-python=/usr/bin/python3 ./b2 -j 8 install --prefix=`pwd`/../boost_1_56_0-bin cd .. export LD_LIBRARY_PATH=`pwd`/boost_1_56_0-bin/lib:$LD_LIBRARY_PATH # Install Embree wget https://github.com/embree/embree/releases/download/v2.17.1/embree-2.17.1.x86_64.linux.tar.gz tar zxvf embree-2.17.1.x86_64.linux.tar.gz export LD_LIBRARY_PATH=`pwd`/embree-2.17.1.x86_64.linux/lib:$LD_LIBRARY_PATH # Install Pillow sudo pip3 install pillow # Compile LuxCore git clone https://github.com/LuxCoreRender/LuxCore.git cd LuxCore cmake -D BOOST_SEARCH_PATH=`pwd`/../boost_1_56_0-bin -D EMBREE_SEARCH_PATH=`pwd`/../embree-2.17.1.x86_64.linux -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.4m -DPYTHON_INCLUDE_DIR2=/usr/include/python3.4m . make -j 8
Ubuntu 16.04 LTS (Dynamic linking)
Dynamic link builds are only used for developing/debugging, not for release builds.
# Install deps sudo apt-get update sudo apt-get install git cmake g++ flex bison libbz2-dev libopenimageio-dev libtiff5-dev libpng12-dev libgtk-3-dev libopenexr-dev libgl1-mesa-dev python3-dev python3-pip libboost-all-dev # Install Embree wget https://github.com/embree/embree/releases/download/v2.17.1/embree-2.17.1.x86_64.linux.tar.gz tar zxvf embree-2.17.1.x86_64.linux.tar.gz export LD_LIBRARY_PATH=`pwd`/embree-2.17.1.x86_64.linux/lib:$LD_LIBRARY_PATH # Install Pillow sudo pip3 install pillow # To have Python v3.x in pyluxcore.so sudo rm /usr/lib/x86_64-linux-gnu/libboost_python.so sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py35.so /usr/lib/x86_64-linux-gnu/libboost_python.so # Compile LuxCore git clone https://github.com/LuxCoreRender/LuxCore.git cd LuxCore export CMAKE_PREFIX_PATH=/usr/lib/x86_64-linux-gnu:/usr/include/x86_64-linux-gnu cmake -D EMBREE_SEARCH_PATH=`pwd`/../embree-2.17.1.x86_64.linux -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m . make -j 8
NOTE: Default Boost version in Ubuntu 16.04LTS is v1.58. Any serialization related feature will not work with standard version v1.56.
macOS 11+
Install build environment
Install latest Xcode and Command Line Tools for your OS version.
Install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Install brew stuff and python3
brew install pyenv cmake bison gnu-sed gnu-tar xz libtool autoconf automake ispc slib bzip2 jpeg PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH" PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH" pyenv init eval "$(pyenv init -)” #####before BigSur#### env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.7.4 #####For BigSur##### env PYTHON_CONFIGURE_OPTS="--enable-framework" CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.7.4 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1) patch needed ################### pyenv global 3.7.4 pip install --upgrade pip #####normal#### pip install numpy #####BigSur#### Download wheel from here https://files.pythonhosted.org/packages/46/09/1bae812d4afa67e365d3d1dbdc0e9071ba7678611f52b49353d6104ae8ff/numpy-1.19.4-cp37-cp37m-macosx_10_9_x86_64.whl rename to numpy-1.19.4-cp37-cp37m-macosx_11_0_x86_64.whl pip install numpy-1.19.4-cp37-cp37m-macosx_11_0_x86_64.whl #################### pip install pillow pip install pyside2
For CUDA builds on MacOS 10.13 only install cuda toolkit.
Compile Dependencies
pyenv shell 3.7.4 git clone https://github.com/LuxCoreRender/MacOSCompileDeps.git cd MacOSCompileDeps ./cut_deps_release
This will leave you with a MacDistFiles.tar.gz .
Compile LuxCore
git clone https://github.com/LuxCoreRender/LuxCore.git cd LuxCore
Copy MacDistFiles.tar.gz to LuxCore root and unpack. Just double-click. or
tar xzf MacDistFiles.tar.gz
Now do
cmake
export PATH="/usr/local/opt/bison/bin:/usr/local/bin:$PATH" DEPS_SOURCE=`pwd`/macos mkdir build cd build cmake -DOSX_DEPENDENCY_ROOT=$DEPS_SOURCE -DCMAKE_BUILD_TYPE=Release .. make
Xcode
export PATH="/usr/local/opt/bison/bin:/usr/local/bin:$PATH" DEPS_SOURCE=`pwd`/macos mkdir build cd build cmake -G Xcode -DOSX_DEPENDENCY_ROOT=$DEPS_SOURCE -DCMAKE_BUILD_TYPE=Release ..
Open Xcode project and compile.
Make bundle
edit scripts/macos/codesign.sh to match your certificate ( something like A1CD139B9FD66DE9D474D420C1899EA96A622B9A )
run
./scripts/macos/pack_lux_osx.sh
or for XCode build
./scripts/macos/pack_lux_osx_xcode.sh
from LuxCore root.
This should end up with a distributable .dmg.
Have fun and good luck.
Contributing
If you want to contribute to LuxCore development or just submit a quick patch, the easiest way to start is to fork the repository on github.
You can then edit your fork, commit your changes and send us a pull request.
If you continue to contribute, we will eventually give you direct access to the repositories.