Out of curiosity, I tried to build RetroLinker, on Darwin/ARM64, using the following version of CLang:
root@Tysons-MacBook-Air RetroLinker # g++ --version
Apple clang version 16.0.0 (clang-1600.0.26.6)
Target: arm64-apple-darwin24.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Whilst it seems to get pretty far, there's a minor issue, with coff.cc, that prevents things from fully building:
root@Tysons-MacBook-Air RetroLinker # gmake
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/link.o src/link.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/common.o src/common.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/formats.o src/formats.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/buffer.o src/linker/buffer.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/format.o src/linker/format.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/image.o src/linker/image.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/location.o src/linker/location.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/module.o src/linker/module.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/module_collector.o src/linker/module_collector.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/position.o src/linker/position.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/reader.o src/linker/reader.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/reference.o src/linker/reference.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/relocation.o src/linker/relocation.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/resolution.o src/linker/resolution.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/section.o src/linker/section.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/segment.o src/linker/segment.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/segment_manager.o src/linker/segment_manager.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/symbol_definition.o src/linker/symbol_definition.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/symbol_name.o src/linker/symbol_name.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/target.o src/linker/target.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/linker/writer.o src/linker/writer.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/8bitexe.o src/format/8bitexe.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/aif.o src/format/aif.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/aout.o src/format/aout.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/arch.o src/format/arch.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/as86obj.o src/format/as86obj.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/binary.o src/format/binary.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/bwexp.o src/format/bwexp.cc
g++ -Wall -Wsuggest-override -Woverloaded-virtual -Wold-style-cast -std=c++20 -O2 -g -c -o src/format/coff.o src/format/coff.cc
src/format/coff.cc:231:38: error: return type of out-of-line definition of 'COFF::COFFFormat::UNIXRelocation::GetEntrySize' differs from that in the declaration
231 | offset_t COFFFormat::UNIXRelocation::GetEntrySize() const
| ~~~~~~~~ ^
src/format/coff.h:335:11: note: previous declaration is here
335 | size_t GetEntrySize() const override;
| ~~~~~~ ^
1 error generated.
gmake: *** [<builtin>: src/format/coff.o] Error 1
Out of curiosity, I tried to build RetroLinker, on Darwin/ARM64, using the following version of CLang:
Whilst it seems to get pretty far, there's a minor issue, with
coff.cc, that prevents things from fully building: