Difference between revisions of "Compiling LuxCore"

From LuxCoreRender Wiki
Jump to navigation Jump to search
 
(36 intermediate revisions by 3 users not shown)
Line 6: Line 6:
  
 
=== 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>
# Download Static compilation scripts
+
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
# Download LuxCore sources
 
git clone https://github.com/LuxCoreRender/LuxCore.git
 
 
 
# Start build script, pass the path to the LuxCore sources as first argument
 
# This will take a very long time on the first run because it needs to compile all dependencies
 
./build-64-sse2 LuxCore
 
 
</pre>
 
</pre>
  
Line 25: Line 24:
  
 
<pre>
 
<pre>
cd LuxCore
+
cd target-64-sse2/LuxCore-opencl/
./bin/luxcoreui ./scenes/luxball/luxball-hdr.cfg
+
./luxcoreui ./scenes/cornell/cornell.cfg
 
</pre>
 
</pre>
  
Line 34: Line 33:
  
 
<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 44:
 
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 50:
  
 
<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 91:
  
 
=== 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 106:
 
# 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 111: Line 118:
 
make -j 8
 
make -j 8
 
</pre>
 
</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 10.13 + ==
 +
 +
=== 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>
 +
 +
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 01:12, 17 December 2020

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 10.13 +

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.

https://developer.nvidia.com/cuda-10.1-download-archive-base?target_os=MacOSX&target_arch=x86_64&target_version=1013

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.