我对使用自动工具是完全陌生的,因此这可能是一个愚蠢的问题,但是我还是会尝试的。我有两片Makefile.am
。除了一个很好,而另一个没有。
这很好。
sbin_PROGRAMS = kernel
kernel_SOURCES = \
src/arch/$(host_cpu)/arch_sysdefs.h \
src/arch/$(host_cpu)/boot.asm \
src/arch/$(host_cpu)/cpu.asm \
src/arch/$(host_cpu)/isr.asm \
src/kmain.cpp
但这不是。生成的.asm
会完全忽略Makefile
个文件。
if HOST_CPU_X86
ASM_EXT = .asm
else
ASM_EXT = .S
endif
sbin_PROGRAMS = kernel
kernel_SOURCES = \
src/arch/$(host_cpu)/arch_sysdefs.h \
src/arch/$(host_cpu)/boot$(ASM_EXT) \
src/arch/$(host_cpu)/cpu$(ASM_EXT) \
src/arch/$(host_cpu)/isr$(ASM_EXT) \
src/kmain.cpp
我想做的是我想为我的项目要支持的某些CPU的汇编文件使用不同的后缀。
我还添加了必要的规则,可以将.asm
转换为目标文件。
.asm.o:
yasm -f $(YASM_OUT_FMT) $< -o $@
编辑:用.cpp.o
暂时覆盖echo $(kernel_SOURCES)
规则显示$(ASM_EXT)
中的kernel_SOURCES
被正确替换了。例如,对于x86-64 CPU,src/arch/$(host_cpu)/boot$(ASM_EXT)
变为src/arch/x86_64/boot.asm
,对于ARM等,则变为src/arch/arm/boot.S
。此外,从autoconf.ac设置ASM_EXT
变量也没有任何区别。 / p>
答案 0 :(得分:0)
[答案已删除-即将删除]