Xcode: Compile options applied to ASM files are not respected
Simple example:
cmake_minimum_required(VERSION 3.16...3.28)
project(demo LANGUAGES C ASM)
add_executable(a a.S)
target_compile_options(a PRIVATE -DBUILD_AARCH64)
Expected behaviour (observed in Makefile generator, with cmake --build build --verbose
[ 50%] Building ASM object CMakeFiles/a.dir/a.S.o
/opt/homebrew/opt/ccache/libexec/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk -mmacosx-version-min=14.3 -DBUILD_AARCH64 -o CMakeFiles/a.dir/a.S.o -c /Users/demo/cmake-issue-demo/GAS_not_source_file/a.S
Undesired behaviour (observed in Xcode generator):
CompileC /Users/demo/cmake-issue-demo/GAS_not_source_file/build-Xcode/build/a.build/Debug/Objects-normal/arm64/a.o /Users/demo/cmake-issue-demo/GAS_not_source_file/a.S normal arm64 assembler-with-cpp com.apple.compilers.llvm.clang.1_0.compiler (in target 'a' from project 'demo')
cd /Users/demo/cmake-issue-demo/GAS_not_source_file
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x assembler-with-cpp -ivfsstatcache /var/folders/wx/p3kml5gn14s_5k6xp15qjtxc0000gn/C/com.apple.DeveloperTools/15.3-15E204a/Xcode/SDKStatCaches.noindex/macosx14.4-23E208-13f6e737bddbb37f317b3579f3535bf5.sdkstatcache -fmessage-length\=187 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit\=0 -fcolor-diagnostics -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-missing-braces -Wparentheses -Wswitch -Wno-unuse
cmake_minimum_required(VERSION 3.16...3.28)
d-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Wno-sign-conversion -Wno-infinite-recursion -Wno-comma -Wno-block-capture-autoreleasing -Wno-strict-prototypes -Wno-semicolon-before-method-body @/Users/demo/cmake-issue-demo/GAS_not_source_file/build-Xcode/build/a.build/Debug/Objects-normal/arm64/533656923a283fa776881f304837ed9e-common-args.resp -MMD -MT dependencies -MF /Users/demo/cmake-issue-demo/GAS_not_source_file/build-Xcode/build/a.build/Debug/Objects-normal/arm64/a.d --serialize-diagnostics /Users/demo/cmake-issue-demo/GAS_not_source_file/build-Xcode/build/a.build/Debug/Objects-normal/arm64/a.dia -c /Users/demo/cmake-issue-demo/GAS_not_source_file/a.S -o /Users/demo/cmake-issue-demo/GAS_not_source_file/build-Xcode/build/a.build/Debug/Objects-normal/arm64/a.o
Noticed that -DBUILD_AARCH64
is missing.
The a.S
file can contain anything (mine was a simple hello world C program generated via gcc -S
), and the -DBUILD_AARCH64
flag can be any compile option.
Test environment is M2 MacBook Pro running macOS 14.3.1 with CMake 3.28.3.
My question is: is there a plan to fix this? How can I help to fix this issue?