-
-
Save fujin/78e3ebda0f6c39d23ce1bb2a904db83c to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash | |
# For `nproc` | |
brew install coreutils | |
# this is 2019_U6, but the cmake script doesn't find it - specify TBB_LIBRARIES_RELEASE as an arg to cmake, with `-D` | |
brew install tbb | |
# The BOOST_REQUIRED_VERSION in PrusaSlicer is 1.64, but that is quite old, | |
# and has been removed from the homebrew-core formula repo. | |
# I took the old 1.64 formula from here: https://github.com/Homebrew/homebrew-core/blob/3df9cdfc25f796ec8d3ffd0a0a12476cf6d413d5/Formula/boost.rb | |
# and put it on a Gist to streamline the install process. | |
# | |
# Be sure to read the homebrew formula if you are concerned. | |
brew install https://gist.github.com/fujin/8f791d879901586b683fff655655425a/raw/fc63d3df397f9340f06a358a8644cff0ba108637/boost.rb | |
# the version 3.0.4 is too old, so remove the old one, and install from Git repository HEAD (compile - takes 11min.) | |
brew uninstall wxwidgets && \ | |
brew install wxwidgets --HEAD |
#!/usr/bin/env bash | |
mkdir build | |
cd build | |
# Fetch some non-brew deps, build them, point cmake at TBB, and an macOS specific compiler flag requirement. | |
# If you want to build a DEBUG build, specify -DTBB_LIBRARIES_DEBUG. | |
# Note that COMPILE_FLAGS is not used for the actual build; but one of the tests cmake performs. | |
cmake .. -DTBB_LIBRARIES_RELEASE=/usr/local/Cellar/tbb/2019_U6/lib/libtbb.dylib -DCMAKE_PREFIX_PATH="${PWD}/../deps/build/destdir/usr/local" -DCOMPILE_FLAGS="-fdeclspec" | |
# Build/download deps etc, non-parallel. | |
time make | |
# Alternatively, for parallel compilation | |
# time make -j $(nproc) |
the nproc variable wasn't set so I hardcoded the last line to "time make -j1" (it will be slower that way, but I didn't feel like looking up how many processors I had allocated.)
The way the -j
options works with the deps build is a bit whimsical at the moment. If you specify -jN
at the top level, the downloads will be parallelized and some of the dependencies builds will be paralellized too but in a different way / by default. You can notice at the top of the deps/CMakeLists.txt
file there's a call to ProcessorCount()
which should be cross-platform. This number is then forwarded to boost build and autotools-based builds. As for CMake builds, I'm not sure, honestly, I'm not doing any custom settings on those. On Linux, it apperas the top-level -j
option is forwarded to CMake builds via MAKEFLAGS
, but I'm not sure if this is the case on Mac OS too.
I should probably fix this.
You should not need to give execute permissions (+x) or
./
if run withbash foo.sh
, but that way is also fine :-)
Apologies, I could have sworn that there was no "bash" on that line. And the part about permissions not being required when invoking .sh scripts that way? Yeah, I didn't know that. Thanks!
I had to change code in BonjourDialog.cpp to get it compiled, I got this error
PrusaSlicer/src/slic3r/GUI/BonjourDialog.cpp:111:15: error: no matching constructor for initialization of 'wxTimerEvent'
wxTimerEvent evt_dummy;
I have to change
wxTimerEvent evt_dummy;
to
wxTimerEvent evt_dummy(*timer);
any idea, why?
also, my TBB is 2019_U8, not 2019_U6
Looks like it should be 3.1: https://github.com/prusa3d/PrusaSlicer/blob/6136fe7d92e386f1a6a6ab227f49c7d6a68abbb3/src/CMakeLists.txt#L49