Ubuntu ARM64 CLang-12 linker error with multiple libraries
cd /home/ubuntu/src/libgd-features-mingw-ci/build/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/gd.dir/link.txt --verbose=1
/usr/bin/clang-cpp-12 -fPIC -shared -Wl,-soname,libgd.so.3 -o ../Bin/libgd.so.3.0.16 CMakeFiles/gd.dir/gd.c.o CMakeFiles/gd.dir/gd_avif.c.o CMakeFiles/gd.dir/gd_bmp.c.o CMakeFiles/gd.dir/gd_color.c.o CMakeFiles/gd.dir/gd_color_map.c.o CMakeFiles/gd.dir/gd_color_match.c.o CMakeFiles/gd.dir/gd_crop.c.o CMakeFiles/gd.dir/gd_filename.c.o CMakeFiles/gd.dir/gd_filter.c.o CMakeFiles/gd.dir/gd_gd.c.o CMakeFiles/gd.dir/gd_gd2.c.o CMakeFiles/gd.dir/gd_gif_in.c.o CMakeFiles/gd.dir/gd_gif_out.c.o CMakeFiles/gd.dir/gd_heif.c.o CMakeFiles/gd.dir/gd_interpolation.c.o CMakeFiles/gd.dir/gd_io.c.o CMakeFiles/gd.dir/gd_io_dp.c.o CMakeFiles/gd.dir/gd_io_file.c.o CMakeFiles/gd.dir/gd_io_ss.c.o CMakeFiles/gd.dir/gd_io_stream.cxx.o CMakeFiles/gd.dir/gd_jpeg.c.o CMakeFiles/gd.dir/gd_matrix.c.o CMakeFiles/gd.dir/gd_nnquant.c.o CMakeFiles/gd.dir/gd_png.c.o CMakeFiles/gd.dir/gd_rotate.c.o CMakeFiles/gd.dir/gd_security.c.o CMakeFiles/gd.dir/gd_ss.c.o CMakeFiles/gd.dir/gd_tga.c.o CMakeFiles/gd.dir/gd_tiff.c.o CMakeFiles/gd.dir/gd_topal.c.o CMakeFiles/gd.dir/gd_transform.c.o CMakeFiles/gd.dir/gd_version.c.o CMakeFiles/gd.dir/gd_wbmp.c.o CMakeFiles/gd.dir/gd_webp.c.o CMakeFiles/gd.dir/gd_xbm.c.o CMakeFiles/gd.dir/gdcache.c.o CMakeFiles/gd.dir/gdfontg.c.o CMakeFiles/gd.dir/gdfontl.c.o CMakeFiles/gd.dir/gdfontmb.c.o CMakeFiles/gd.dir/gdfonts.c.o CMakeFiles/gd.dir/gdfontt.c.o CMakeFiles/gd.dir/gdft.c.o CMakeFiles/gd.dir/gdfx.c.o CMakeFiles/gd.dir/gdhelpers.c.o CMakeFiles/gd.dir/gdkanji.c.o CMakeFiles/gd.dir/gdpp.cxx.o CMakeFiles/gd.dir/gdtables.c.o CMakeFiles/gd.dir/gdxpm.c.o CMakeFiles/gd.dir/wbmp.c.o -L/usr/lib/gcc/aarch64-linux-gnu/9 -L/usr/lib/llvm-12/lib /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libfreetype.so /usr/lib/aarch64-linux-gnu/libpng.so /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/aarch64-linux-gnu/libwebp.so /usr/lib/aarch64-linux-gnu/libheif.so /usr/lib/aarch64-linux-gnu/libfreetype.so /usr/lib/aarch64-linux-gnu/libpng.so /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/aarch64-linux-gnu/libwebp.so /usr/lib/aarch64-linux-gnu/libheif.so -lgcc -lgcc_s -lc -lgcc -lgcc_s
produces:
clang: error: cannot specify -o when generating multiple output files
make[2]: *** [src/CMakeFiles/gd.dir/build.make:819: Bin/libgd.so.3.0.16] Error 1
make[2]: Leaving directory '/home/ubuntu/src/libgd-features-mingw-ci/build'
make[1]: *** [CMakeFiles/Makefile2:2094: src/CMakeFiles/gd.dir/all] Error 2
make[1]: Leaving directory '/home/ubuntu/src/libgd-features-mingw-ci/build'
make: *** [Makefile:166: all] Error 2
adding a double quote to the last -L works:
-L"/usr/lib/llvm-12/lib /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libfreetype.so /usr/lib/aarch64-linux-gnu/libpng.so /usr/lib/aarch64-linux-gnu/libz.so /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/aarch64-linux-gnu/libwebp.so /usr/lib/aarch64-linux-gnu/libheif.so /usr/lib/aarch64-linux-gnu/libfreetype.so /usr/lib/aarch64-linux-gnu/libpng.so /usr/lib/aarch64-linux-gnu/libjpeg.so /usr/lib/aarch64-linux-gnu/libwebp.so /usr/lib/aarch64-linux-gnu/libheif.so"
Except generating myself the linker flags instead of calling target_link_libraries(${GD_LIB} {LIBGD_DEP_LIBS}), any idea how to tell CMake to quote it? Please not that using target_link_libraries(
{GD_LIB} "${LIBGD_DEP_LIBS}") does not help, the double quotes are removed before being used.
Full log and config at: https://github.com/libgd/libgd/runs/3458379191?check_suite_focus=true CMake calls can be found in https://github.com/libgd/libgd/blob/features/mingw-ci/.github/workflows/ci_ubuntu.yml