Managed to build ART 1.12.1 on macOS Monterey

What could also be useful is testing if you have the same issue when starting ART from the command line in your [source]/build/Release/MacOS folder. For example the crash when opening a file explorer windows does not happen for me when running ART this way. It does happen when running the ‘installed’ version.

So it is likely an issue with the macosx_bundle.sh file. Look carefully for errors in the output of the ‘make macosx_bundle’ command. It also generates a ton of warnings so it is easy to overlook errors.

3 Likes

I’ve rebuilt it again.

Here is the full output in case anyone could identify any problem, I’m not really able enough to understand what the output means: complete ART build process terminal output · GitHub

Here is a “permament” upload location, would be better to upload to one of the git repositories though: 77.18 MB file on MEGA

ART was forked at a time when :apple: was introducing enhanced Gatekeeper security, and could be running a bit behind what has since transpired in the RT commit log.

Would it make sense for interested users to buy you a hosted VM? For example:

or
https://checkout.macincloud.com/select/payg

I’m afraid not, sorry. I know nothing about osx, and my feeling is that I would need to spend a considerable amount of time to produce a binary package of decent quality. This is not something I’m interested in doing (and also maintaining), to be honest. I’d be very happy to link to a user-provided binary though. Maybe if I switch to osx…

1 Like

This is a download link of a working build based on the latest source code. This build is for Intel Macs. I also use an M1 Mac so I can also provide a silicon build if anyone is interested.

3 Likes

@giovariot

Can you please test something with your OpenMP build?

  1. enable this in preferences

  2. close ART

  3. start ART from console, put an image into the queue and start the queue. Post the console log.

  4. close ART

  5. start ART from console, but this time using OMP_NUM_THREADS=1 art, put the same image into the queue and start the queue. Post again the console log.

I am currently using RawTherapee and just found out about ART and would like to use it.
I also use an M1 Mac and would like to use the Apple Silicon version. Thank you in advance.

1 Like

Frank, Im interested!
I have a M1 macmini and I like to try your ART build
I will wait for your instructions…

Thanks

This is a M1 build of the current source code. The link will only be valid for a week so if this build works for others it might be better to find a more permanent place.
The build is not signed so it will likely crash. On my Mac I get it to work via:
sudo codesign --force --deep --sign - /Applications/ART.app

1 Like

Thanks Frank
It is working for me… :+1:

1 Like

Hi,

If you can find a “more permanent” location, I’ll be happy to put a link to it in the ART webpage.

Thank you very much.
I have installed and confirmed that it can be used.
However, it crashes frequently.
It seems to crash when I start the file browser. It also crashes when I try to change the highlight color in the preferences.
In any case, it works faster and is comfortable to use.

Sorry to hear that, strangely enough I do not have these problems.
Do you see a crash report that might contain some useful information? Maybe there is a library missing in the bundle that is installed on my Mac and not on yours…

Hi Frank, could please post your build again?
And ideally, could post here how you managed to build ARTand its installer?

For the build I basically followed the instructions for RawTherapee:

sudo rm -rf build 
mkdir build && cd build

export LIBRARY_PATH="$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib" && \
export PKG_CONFIG_PATH=/opt/homebrew/opt/libffi/lib/pkgconfig:/opt/homebrew/opt/expat/lib/pkgconfig && \
cmake  .. -DCMAKE_BUILD_TYPE="release" \
          -DPROC_TARGET_NUMBER="1" \
          -DCACHE_NAME_SUFFIX="1.12-dev" \
          -DCMAKE_C_COMPILER="/opt/homebrew/Cellar/llvm/13.0.1_1/bin/clang" \
          -DCMAKE_CXX_COMPILER="/opt/homebrew/Cellar/llvm/13.0.1_1/bin/clang++" \
          -DWITH_LTO="ON" \
          -DLENSFUNDBDIR="/Applications/ART.app/Contents/Resources/share/lensfun" \
          -DCMAKE_BUILD_TYPE=Release \
          -DOpenMP_C_FLAGS=-fopenmp=libomp \
          -DOpenMP_CXX_FLAGS=-fopenmp=libomp \
          -DOpenMP_C_LIB_NAMES="libomp" \
          -DOpenMP_CXX_LIB_NAMES="libomp" \
          -DOpenMP_libomp_LIBRARY="/opt/homebrew/lib/libomp.dylib" \
          -DOpenMP_CXX_FLAGS="-Wno-pass-failed -Wno-deprecated-register -Xpreprocessor -fopenmp /opt/homebrew/lib/libomp.dylib -I/opt/homebrew/include" \
          -DOpenMP_CXX_LIB_NAMES="libomp" \
          -DOpenMP_C_FLAGS="-Wno-pass-failed -Wno-deprecated-register -Xpreprocessor -fopenmp /opt/homebrew/lib/libomp.dylib -I/opt/homebrew/include" \
          -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
          -DCMAKE_EXE_LINKER_FLAGS="-L/opt/homebrew/opt/libffi/lib -L/opt/homebrew/lib" \
          -DCMAKE_AR="/opt/homebrew/Cellar/llvm/13.0.1_1/bin/llvm-ar" \
          -DCMAKE_RANLIB="/opt/homebrew/Cellar/llvm/13.0.1_1/bin/llvm-ranlib" \
          -DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 \
          -DLOCAL_PREFIX:STRING="/opt/homebrew" \
          -DCMAKE_OSX_ARCHITECTURES=arm64 \
          ..

Next you start the build:

make -j$(sysctl -n hw.ncpu) install

For creating the bundle and DMG I created my own macosx_bundle.sh file which is a mix of the versions of ART and RawTherapee. This was an annoying process that took some time and I am not not sure it is 100% perfect but it at least creates something usable.
The file is attached and should be placed in the tools/osx folder. Remove the .txt extension.

After that you create the bundle with
sudo make macosx_bundle

This creates the DMG in the build folder. After installing use
sudo codesign --force --deep --sign - /Applications/ART.app

You can use the same commands to build a M1 version of RawTherapee by the way, without the need to use my custom macosx_bundle.sh.

Hope this helps.
macosx_bundle.sh.txt (17.7 KB)

1 Like

Thanks! I had managed to get ART compile in Big Sur, but I failed at making the bundle script work. I tried to mix scripts as you did, but I didn’t succeed. Now that I’ve switched to Monterey a few days ago, I’ll try to follow your steps.

Finally I had the opportunity to try compiling ART on Monterey 12.4.
Unfortunately, it failed compiling:

clang-14: warning: /opt/homebrew/lib/libomp.dylib: 'linker' input unused [-Wunused-command-line-argument]
[ 44%] Linking CXX static library librtengine.a
cd /Users/sguyader/PhotoApps/art/build/rtengine && /opt/homebrew/Cellar/cmake/3.23.2/bin/cmake -P CMakeFiles/rtengine.dir/cmake_clean_target.cmake
cd /Users/sguyader/PhotoApps/art/build/rtengine && /opt/homebrew/Cellar/cmake/3.23.2/bin/cmake -E cmake_link_script CMakeFiles/rtengine.dir/link.txt --verbose=1
/opt/local/bin/ar qc librtengine.a CMakeFiles/rtengine.dir/badpixels.cc.o CMakeFiles/rtengine.dir/CA_correct_RT.cc.o CMakeFiles/rtengine.dir/FTblockDN.cc.o CMakeFiles/rtengine.dir/PF_correct_RT.cc.o CMakeFiles/rtengine.dir/alpha.cc.o CMakeFiles/rtengine.dir/ahd_demosaic_RT.cc.o CMakeFiles/rtengine.dir/amaze_demosaic_RT.cc.o CMakeFiles/rtengine.dir/cJSON.c.o CMakeFiles/rtengine.dir/calc_distort.cc.o CMakeFiles/rtengine.dir/camconst.cc.o CMakeFiles/rtengine.dir/cfa_linedn_RT.cc.o CMakeFiles/rtengine.dir/ciecam02.cc.o CMakeFiles/rtengine.dir/clutstore.cc.o CMakeFiles/rtengine.dir/color.cc.o CMakeFiles/rtengine.dir/colortemp.cc.o CMakeFiles/rtengine.dir/coord.cc.o CMakeFiles/rtengine.dir/cplx_wavelet_dec.cc.o CMakeFiles/rtengine.dir/curves.cc.o CMakeFiles/rtengine.dir/dcp.cc.o CMakeFiles/rtengine.dir/dcraw.cc.o CMakeFiles/rtengine.dir/dcrop.cc.o CMakeFiles/rtengine.dir/demosaic_algos.cc.o CMakeFiles/rtengine.dir/dfmanager.cc.o CMakeFiles/rtengine.dir/diagonalcurves.cc.o CMakeFiles/rtengine.dir/dual_demosaic_RT.cc.o CMakeFiles/rtengine.dir/dynamicprofile.cc.o CMakeFiles/rtengine.dir/eahd_demosaic.cc.o CMakeFiles/rtengine.dir/fast_demo.cc.o CMakeFiles/rtengine.dir/ffmanager.cc.o CMakeFiles/rtengine.dir/flatcurves.cc.o CMakeFiles/rtengine.dir/gauss.cc.o CMakeFiles/rtengine.dir/green_equil_RT.cc.o CMakeFiles/rtengine.dir/hilite_recon.cc.o CMakeFiles/rtengine.dir/hphd_demosaic_RT.cc.o CMakeFiles/rtengine.dir/iccjpeg.cc.o CMakeFiles/rtengine.dir/iccstore.cc.o CMakeFiles/rtengine.dir/iimage.cc.o CMakeFiles/rtengine.dir/image16.cc.o CMakeFiles/rtengine.dir/image8.cc.o CMakeFiles/rtengine.dir/imagedata.cc.o CMakeFiles/rtengine.dir/imagedimensions.cc.o CMakeFiles/rtengine.dir/imagefloat.cc.o CMakeFiles/rtengine.dir/imageio.cc.o CMakeFiles/rtengine.dir/improccoordinator.cc.o CMakeFiles/rtengine.dir/improcfun.cc.o CMakeFiles/rtengine.dir/impulse_denoise.cc.o CMakeFiles/rtengine.dir/init.cc.o CMakeFiles/rtengine.dir/iprgb2out.cc.o CMakeFiles/rtengine.dir/ipresize.cc.o CMakeFiles/rtengine.dir/ipsharpen.cc.o CMakeFiles/rtengine.dir/iptransform.cc.o CMakeFiles/rtengine.dir/rtjpeg.cc.o CMakeFiles/rtengine.dir/klt/convolve.cc.o CMakeFiles/rtengine.dir/klt/error.cc.o CMakeFiles/rtengine.dir/klt/klt.cc.o CMakeFiles/rtengine.dir/klt/klt_util.cc.o CMakeFiles/rtengine.dir/klt/pnmio.cc.o CMakeFiles/rtengine.dir/klt/pyramid.cc.o CMakeFiles/rtengine.dir/klt/selectGoodFeatures.cc.o CMakeFiles/rtengine.dir/klt/storeFeatures.cc.o CMakeFiles/rtengine.dir/klt/trackFeatures.cc.o CMakeFiles/rtengine.dir/klt/writeFeatures.cc.o CMakeFiles/rtengine.dir/labimage.cc.o CMakeFiles/rtengine.dir/lcp.cc.o CMakeFiles/rtengine.dir/lmmse_demosaic.cc.o CMakeFiles/rtengine.dir/loadinitial.cc.o CMakeFiles/rtengine.dir/myfile.cc.o CMakeFiles/rtengine.dir/panasonic_decoders.cc.o CMakeFiles/rtengine.dir/pipettebuffer.cc.o CMakeFiles/rtengine.dir/pixelshift.cc.o CMakeFiles/rtengine.dir/previewimage.cc.o CMakeFiles/rtengine.dir/processingjob.cc.o CMakeFiles/rtengine.dir/procparams.cc.o CMakeFiles/rtengine.dir/profilestore.cc.o CMakeFiles/rtengine.dir/rawimage.cc.o CMakeFiles/rtengine.dir/rawimagesource.cc.o CMakeFiles/rtengine.dir/rcd_demosaic.cc.o CMakeFiles/rtengine.dir/refreshmap.cc.o CMakeFiles/rtengine.dir/rt_algo.cc.o CMakeFiles/rtengine.dir/rt_polygon.cc.o CMakeFiles/rtengine.dir/rtthumbnail.cc.o CMakeFiles/rtengine.dir/simpleprocess.cc.o CMakeFiles/rtengine.dir/ipspot.cc.o CMakeFiles/rtengine.dir/slicer.cc.o CMakeFiles/rtengine.dir/stdimagesource.cc.o CMakeFiles/rtengine.dir/utils.cc.o CMakeFiles/rtengine.dir/rtlensfun.cc.o CMakeFiles/rtengine.dir/tmo_fattal02.cc.o CMakeFiles/rtengine.dir/iplocalcontrast.cc.o CMakeFiles/rtengine.dir/histmatching.cc.o CMakeFiles/rtengine.dir/pdaflinesfilter.cc.o CMakeFiles/rtengine.dir/gamutwarning.cc.o CMakeFiles/rtengine.dir/iptoneequalizer.cc.o CMakeFiles/rtengine.dir/ipsoftlight.cc.o CMakeFiles/rtengine.dir/xtrans_demosaic.cc.o CMakeFiles/rtengine.dir/vng4_demosaic_RT.cc.o CMakeFiles/rtengine.dir/guidedfilter.cc.o CMakeFiles/rtengine.dir/ipdehaze.cc.o CMakeFiles/rtengine.dir/ipcolorcorrection.cc.o CMakeFiles/rtengine.dir/lj92.c.o CMakeFiles/rtengine.dir/ipsmoothing.cc.o CMakeFiles/rtengine.dir/iplogenc.cc.o CMakeFiles/rtengine.dir/labmasks.cc.o CMakeFiles/rtengine.dir/ipgrain.cc.o CMakeFiles/rtengine.dir/ipdenoise.cc.o CMakeFiles/rtengine.dir/iptextureboost.cc.o CMakeFiles/rtengine.dir/metadata.cc.o CMakeFiles/rtengine.dir/iplabadjustments.cc.o CMakeFiles/rtengine.dir/perspectivecorrection.cc.o CMakeFiles/rtengine.dir/iphsl.cc.o CMakeFiles/rtengine.dir/ipchmixer.cc.o CMakeFiles/rtengine.dir/ipexposure.cc.o CMakeFiles/rtengine.dir/iprgbcurves.cc.o CMakeFiles/rtengine.dir/ipbw.cc.o CMakeFiles/rtengine.dir/ipsaturation.cc.o CMakeFiles/rtengine.dir/ipfilmsim.cc.o CMakeFiles/rtengine.dir/iptonecurve.cc.o CMakeFiles/rtengine.dir/deconvautoradius.cc.o CMakeFiles/rtengine.dir/filmnegativeproc.cc.o CMakeFiles/rtengine.dir/filmnegativethumb.cc.o CMakeFiles/rtengine.dir/canon_cr3_decoder.cc.o CMakeFiles/rtengine.dir/rawimage_gainmap.cc.o CMakeFiles/rtengine.dir/subprocess.cc.o CMakeFiles/rtengine.dir/bayer_bilinear_demosaic.cc.o CMakeFiles/rtengine.dir/gainmap.cc.o CMakeFiles/rtengine.dir/base64.cc.o CMakeFiles/rtengine.dir/imgiomanager.cc.o CMakeFiles/rtengine.dir/lensexif.cc.o CMakeFiles/rtengine.dir/nlmeans.cc.o CMakeFiles/rtengine.dir/newdelete.cc.o
Error running link command: No such file or directory
make[2]: *** [rtengine/librtengine.a] Error 2
make[1]: *** [rtengine/CMakeFiles/rtengine.dir/all] Error 2
make: *** [all] Error 2

That warning about the linker input unused came several times during the steps of compiling. Any idea?

The difference with your build is that my system was slightly more up-to-date than yours (llvm version is 14.0.6 here, but I updated the cmake command with the relevant path).

You may have an incorrect linker defined. Check to see what CMAKE_LINKER is set to.

I found this in CMakeCache.txt:

CMAKE_LINKER:FILEPATH=/opt/homebrew/Cellar/llvm/14.0.6/bin/ld.lld

and ld.lld is a shortcut to the existing executable lld.