Managed to build ART 1.12.1 on macOS Monterey

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.

I see- you have llvm clang going on… The unused linker input is referring to the fact that the flag given is not used by the linker side of clang (however it is used by the compiler).
It is only a warning and not related to the error your are getting. You have parallel building going on, but I might guess the erroneous linker command in question is in the cmake_link_script… I am not sure how ART works these days.

Thanks for checking. The strange thing is that @FrankdeJong succeeded.

@sguyader You might be missing a symlink. Please look in this topic at the posts of March 9, another user has had the same issue.

1 Like

Ah, I missed that post… I’ll try later with this symlink trick. Thanks!