:: limine / common / common.mk 30.3 KB raw

1
.SUFFIXES:
2
3
override SRCDIR := $(shell pwd -P)
4
5
override SPACE := $(subst ,, )
6
7
override MKESCAPE = $(subst $(SPACE),\ ,$(1))
8
override SHESCAPE = $(subst ','\'',$(1))
9
override OBJESCAPE = $(subst .a ,.a' ',$(subst .o ,.o' ',$(call SHESCAPE,$(1))))
10
11
override CC_FOR_TARGET_IS_CLANG := $(shell ! $(CC_FOR_TARGET) --version 2>/dev/null | $(GREP) -q '^Target: '; echo $$?)
12
13
COM_OUTPUT := false
14
E9_OUTPUT := false
15
16
override S2CFLAGS := -Os
17
18
override BASE_CFLAGS := $(CFLAGS_FOR_TARGET)
19
20
override CFLAGS_FOR_TARGET += \
21
    -g \
22
    -Wall \
23
    -Wextra \
24
    -Wshadow \
25
    -Wvla \
26
    $(WERROR_FLAG) \
27
    -std=gnu11 \
28
    -nostdinc \
29
    -ffreestanding \
30
    -ffunction-sections \
31
    -fdata-sections \
32
    -fno-stack-protector \
33
    -fno-stack-check \
34
    -fno-omit-frame-pointer \
35
    -fno-strict-aliasing \
36
    -fno-lto
37
38
override CPPFLAGS_FOR_TARGET := \
39
    -I . \
40
    -I libc-compat \
41
    -I ../limine-protocol/include \
42
    -I ../flanterm/src \
43
    -I ../libfdt/src \
44
    -I '$(call SHESCAPE,$(BUILDDIR))/..' \
45
    -isystem ../freestnd-c-hdrs/include \
46
    $(CPPFLAGS_FOR_TARGET) \
47
    -DCOM_OUTPUT=$(COM_OUTPUT) \
48
    -DE9_OUTPUT=$(E9_OUTPUT) \
49
    -DFLANTERM_IN_FLANTERM \
50
    -MMD \
51
    -MP
52
53
$(call MKESCAPE,$(BUILDDIR))/libfdt/src/fdt_overlay.o: override CFLAGS_FOR_TARGET += \
54
    -Wno-unused-parameter
55
56
$(call MKESCAPE,$(BUILDDIR))/flanterm/src/flanterm_backends/fb.o: override CPPFLAGS_FOR_TARGET += \
57
    -DFLANTERM_FB_DISABLE_BUMP_ALLOC
58
59
override NASMFLAGS_FOR_TARGET += \
60
    -g \
61
    -Wall \
62
    -w-unknown-warning \
63
    -w-reloc \
64
    $(WERROR_FLAG)
65
66
override NASMFLAGS_FOR_TARGET := \
67
    $(patsubst -g,-g -F dwarf,$(NASMFLAGS_FOR_TARGET))
68
69
ifeq ($(TARGET),bios)
70
    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
71
        override CC_FOR_TARGET += \
72
            -target i686-unknown-none-elf
73
    endif
74
    override CFLAGS_FOR_TARGET += \
75
        -fno-PIC \
76
        -m32 \
77
        -march=i686 \
78
        -mabi=sysv \
79
        -mno-80387 \
80
        -mno-mmx
81
    override CPPFLAGS_FOR_TARGET := \
82
        $(CPPFLAGS_FOR_TARGET) \
83
        -DBIOS
84
    override NASMFLAGS_FOR_TARGET := \
85
        -f elf32 \
86
        $(NASMFLAGS_FOR_TARGET) \
87
        -DIA32_TARGET \
88
        -DBIOS
89
endif
90
91
ifeq ($(TARGET),uefi-x86-64)
92
    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
93
        override CC_FOR_TARGET += \
94
            -target x86_64-unknown-none-elf
95
    endif
96
    override CFLAGS_FOR_TARGET += \
97
        -fPIE \
98
        -fshort-wchar \
99
        -m64 \
100
        -march=x86-64 \
101
        -mabi=sysv \
102
        -mno-80387 \
103
        -mno-mmx \
104
        -mno-sse \
105
        -mno-sse2 \
106
        -mno-red-zone
107
    override CPPFLAGS_FOR_TARGET := \
108
        -I ../picoefi/inc \
109
        $(CPPFLAGS_FOR_TARGET) \
110
        -DUEFI
111
    override NASMFLAGS_FOR_TARGET := \
112
        -f elf64 \
113
        $(NASMFLAGS_FOR_TARGET) \
114
        -DX86_64_TARGET \
115
        -DUEFI
116
endif
117
118
ifeq ($(TARGET),uefi-ia32)
119
    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
120
        override CC_FOR_TARGET += \
121
            -target i686-unknown-none-elf
122
    endif
123
    override CFLAGS_FOR_TARGET += \
124
        -fPIE \
125
        -fshort-wchar \
126
        -m32 \
127
        -march=i686 \
128
        -malign-double \
129
        -mabi=sysv \
130
        -mno-80387 \
131
        -mno-mmx
132
    override CPPFLAGS_FOR_TARGET := \
133
        -I ../picoefi/inc \
134
        $(CPPFLAGS_FOR_TARGET) \
135
        -DUEFI
136
    override NASMFLAGS_FOR_TARGET := \
137
        -f elf32 \
138
        $(NASMFLAGS_FOR_TARGET) \
139
        -DIA32_TARGET \
140
        -DUEFI
141
endif
142
143
ifeq ($(TARGET),uefi-aarch64)
144
    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
145
        override CC_FOR_TARGET += \
146
            -target aarch64-unknown-none-elf
147
    endif
148
    override CFLAGS_FOR_TARGET += \
149
        -fPIE \
150
        -fshort-wchar \
151
        -mcpu=generic \
152
        -march=armv8-a+nofp+nosimd \
153
        -mgeneral-regs-only
154
    override CPPFLAGS_FOR_TARGET := \
155
        -I ../picoefi/inc \
156
        $(CPPFLAGS_FOR_TARGET) \
157
        -DUEFI
158
endif
159
160
ifeq ($(TARGET),uefi-riscv64)
161
    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
162
        override CC_FOR_TARGET += \
163
            -target riscv64-unknown-none-elf
164
    endif
165
    override CFLAGS_FOR_TARGET += \
166
        -fPIE \
167
        -fshort-wchar \
168
        -march=rv64imac_zicsr_zifencei \
169
        -mabi=lp64 \
170
        -mno-relax
171
    override CPPFLAGS_FOR_TARGET := \
172
        -I ../picoefi/inc \
173
        $(CPPFLAGS_FOR_TARGET) \
174
        -DUEFI
175
endif
176
177
ifeq ($(TARGET),uefi-loongarch64)
178
    ifeq ($(CC_FOR_TARGET_IS_CLANG),1)
179
        override CC_FOR_TARGET += \
180
            -target loongarch64-unknown-none-elf
181
    endif
182
    override CFLAGS_FOR_TARGET += \
183
        -fPIE \
184
        -fshort-wchar \
185
        -march=loongarch64 \
186
        -mabi=lp64s \
187
        -mfpu=none \
188
        -msimd=none
189
    override CPPFLAGS_FOR_TARGET := \
190
        -I ../picoefi/inc \
191
        $(CPPFLAGS_FOR_TARGET) \
192
        -DUEFI
193
endif
194
195
override LDFLAGS_FOR_TARGET += \
196
    -nostdlib \
197
    -z max-page-size=0x1000 \
198
    --gc-sections
199
200
ifeq ($(TARGET),bios)
201
    override LDFLAGS_FOR_TARGET += \
202
        -m elf_i386 \
203
        -static \
204
        --build-id=sha1
205
endif
206
207
ifeq ($(TARGET),uefi-x86-64)
208
    override LDFLAGS_FOR_TARGET += \
209
        -m elf_x86_64 \
210
        -pie \
211
        -z text
212
endif
213
214
ifeq ($(TARGET),uefi-ia32)
215
    override LDFLAGS_FOR_TARGET += \
216
        -m elf_i386 \
217
        -pie \
218
        -z text
219
endif
220
221
ifeq ($(TARGET),uefi-aarch64)
222
    override LDFLAGS_FOR_TARGET += \
223
        -m aarch64elf \
224
        -pie \
225
        -z text
226
endif
227
228
ifeq ($(TARGET),uefi-riscv64)
229
    override LDFLAGS_FOR_TARGET += \
230
        -m elf64lriscv \
231
        --no-relax \
232
        -pie \
233
        -z text
234
endif
235
236
ifeq ($(TARGET),uefi-loongarch64)
237
    override LDFLAGS_FOR_TARGET += \
238
        -m elf64loongarch \
239
        -pie \
240
        -z text
241
endif
242
243
ifeq ($(TARGET),bios)
244
    override C_FILES := $(shell cd .. && find common flanterm/src libfdt/src -type f -name '*.c' | LC_ALL=C sort)
245
    override S_FILES := $(shell cd .. && find common -type f -name '*.S' | LC_ALL=C sort)
246
247
    override ASMX86_FILES := $(shell cd .. && find common -type f -name '*.asm_x86' | LC_ALL=C sort)
248
    override ASM32_FILES := $(shell cd .. && find common -type f -name '*.asm_ia32' | LC_ALL=C sort)
249
    override ASMB_FILES := $(shell cd .. && find common -type f -name '*.asm_bios_ia32' | LC_ALL=C sort)
250
251
    override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(S_FILES:.S=.o) $(ASM32_FILES:.asm_ia32=.o) $(ASMB_FILES:.asm_bios_ia32=.o) $(ASMX86_FILES:.asm_x86=.o))
252
    override OBJ_S2 := $(filter %.s2.o,$(OBJ))
253
endif
254
ifeq ($(TARGET),uefi-x86-64)
255
    override C_FILES := $(shell cd .. && find common picoefi/x86_64 flanterm/src libfdt/src -type f -name '*.c' | LC_ALL=C sort)
256
    override S_FILES := $(shell cd .. && find common picoefi/x86_64 -type f -name '*.S' | LC_ALL=C sort)
257
258
    override ASMX86_FILES := $(shell cd .. && find common -type f -name '*.asm_x86' | LC_ALL=C sort)
259
    override ASM64_FILES := $(shell cd .. && find common -type f -name '*.asm_x86_64' | LC_ALL=C sort)
260
    override ASM64U_FILES := $(shell cd .. && find common -type f -name '*.asm_uefi_x86_64' | LC_ALL=C sort)
261
262
    override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(S_FILES:.S=.o) $(ASM64_FILES:.asm_x86_64=.o) $(ASM64U_FILES:.asm_uefi_x86_64=.o) $(ASMX86_FILES:.asm_x86=.o))
263
endif
264
ifeq ($(TARGET),uefi-ia32)
265
    override C_FILES := $(shell cd .. && find common picoefi/ia32 flanterm/src libfdt/src -type f -name '*.c' | LC_ALL=C sort)
266
    override S_FILES := $(shell cd .. && find common picoefi/ia32 -type f -name '*.S' | LC_ALL=C sort)
267
268
    override ASMX86_FILES := $(shell cd .. && find common -type f -name '*.asm_x86' | LC_ALL=C sort)
269
    override ASM32_FILES := $(shell cd .. && find common -type f -name '*.asm_ia32' | LC_ALL=C sort)
270
    override ASM32U_FILES := $(shell cd .. && find common -type f -name '*.asm_uefi_ia32' | LC_ALL=C sort)
271
272
    override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(S_FILES:.S=.o) $(ASM32_FILES:.asm_ia32=.o) $(ASM32U_FILES:.asm_uefi_ia32=.o) $(ASMX86_FILES:.asm_x86=.o))
273
endif
274
ifeq ($(TARGET),uefi-aarch64)
275
    override C_FILES := $(shell cd .. && find common picoefi/aarch64 flanterm/src libfdt/src -type f -name '*.c' | LC_ALL=C sort)
276
    override S_FILES := $(shell cd .. && find common picoefi/aarch64 -type f -name '*.S' | LC_ALL=C sort)
277
278
    override ASM64_FILES := $(shell cd .. && find common -type f -name '*.asm_aarch64' | LC_ALL=C sort)
279
    override ASM64U_FILES := $(shell cd .. && find common -type f -name '*.asm_uefi_aarch64' | LC_ALL=C sort)
280
281
    override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(S_FILES:.S=.o) $(ASM64_FILES:.asm_aarch64=.o) $(ASM64U_FILES:.asm_uefi_aarch64=.o))
282
endif
283
ifeq ($(TARGET),uefi-riscv64)
284
    override C_FILES := $(shell cd .. && find common picoefi/riscv64 flanterm/src libfdt/src -type f -name '*.c' | LC_ALL=C sort)
285
    override S_FILES := $(shell cd .. && find common picoefi/riscv64 -type f -name '*.S' | LC_ALL=C sort)
286
287
    override ASM64_FILES := $(shell cd .. && find common -type f -name '*.asm_riscv64' | LC_ALL=C sort)
288
    override ASM64U_FILES := $(shell cd .. && find common -type f -name '*.asm_uefi_riscv64' | LC_ALL=C sort)
289
290
    override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(S_FILES:.S=.o) $(ASM64_FILES:.asm_riscv64=.o) $(ASM64U_FILES:.asm_uefi_riscv64=.o))
291
endif
292
ifeq ($(TARGET),uefi-loongarch64)
293
    override C_FILES := $(shell cd .. && find common picoefi/loongarch64 flanterm/src libfdt/src -type f -name '*.c' | LC_ALL=C sort)
294
    override S_FILES := $(shell cd .. && find common picoefi/loongarch64 -type f -name '*.S' | LC_ALL=C sort)
295
296
    override ASM64_FILES := $(shell cd .. && find common -type f -name '*.asm_loongarch64' | LC_ALL=C sort)
297
    override ASM64U_FILES := $(shell cd .. && find common -type f -name '*.asm_uefi_loongarch64' | LC_ALL=C sort)
298
299
    override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(S_FILES:.S=.o) $(ASM64_FILES:.asm_loongarch64=.o) $(ASM64U_FILES:.asm_uefi_loongarch64=.o))
300
endif
301
302
override HEADER_DEPS := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.d) $(C_FILES:.S=.d))
303
304
.PHONY: all
305
306
ifeq ($(TARGET),bios)
307
all: $(call MKESCAPE,$(BUILDDIR))/limine-bios.sys $(call MKESCAPE,$(BUILDDIR))/stage2.bin.limlz
308
endif
309
ifeq ($(TARGET),uefi-x86-64)
310
all: $(call MKESCAPE,$(BUILDDIR))/BOOTX64.EFI
311
endif
312
ifeq ($(TARGET),uefi-ia32)
313
all: $(call MKESCAPE,$(BUILDDIR))/BOOTIA32.EFI
314
endif
315
ifeq ($(TARGET),uefi-aarch64)
316
all: $(call MKESCAPE,$(BUILDDIR))/BOOTAA64.EFI
317
endif
318
ifeq ($(TARGET),uefi-riscv64)
319
all: $(call MKESCAPE,$(BUILDDIR))/BOOTRISCV64.EFI
320
endif
321
ifeq ($(TARGET),uefi-loongarch64)
322
all: $(call MKESCAPE,$(BUILDDIR))/BOOTLOONGARCH64.EFI
323
endif
324
325
ifeq ($(TARGET),bios)
326
327
$(call MKESCAPE,$(BUILDDIR))/stage2.bin.limlz: $(call MKESCAPE,$(BUILDDIR))/stage2.bin
328
	'$(call SHESCAPE,$(LIMLZPACK))' '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
329
330
$(call MKESCAPE,$(BUILDDIR))/stage2.bin: $(call MKESCAPE,$(BUILDDIR))/limine-bios.sys
331
	dd if='$(call SHESCAPE,$<)' bs=$$(( 0x$$("$(READELF_FOR_TARGET)" -S '$(call SHESCAPE,$(BUILDDIR))/limine.elf' | $(GREP) '\.text\.stage3' | $(SED) 's/^.*] //' | $(AWK) '{print $$3}' | $(SED) 's/^0*//') - 0xf000 )) count=1 of='$(call SHESCAPE,$@)' 2>/dev/null
332
333
$(call MKESCAPE,$(BUILDDIR))/stage2.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
334
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
335
		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' stage2 32 '\.text\.stage2'
336
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(BUILDDIR))/stage2.map.S' -o '$(call SHESCAPE,$@)'
337
	rm -f '$(call SHESCAPE,$(BUILDDIR))/stage2.map.S' '$(call SHESCAPE,$(BUILDDIR))/stage2.map.d'
338
339
$(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nos3map.elf
340
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
341
		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 32 '\.text'
342
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
343
	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
344
345
$(call MKESCAPE,$(BUILDDIR))/limine-bios.sys: $(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf $(call MKESCAPE,$(BUILDDIR))/limine.elf
346
	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$(BUILDDIR))/limine.elf' '$(call SHESCAPE,$@)'
347
	chmod -x '$(call SHESCAPE,$@)'
348
349
$(call MKESCAPE,$(BUILDDIR))/linker_stage2only.ld: linker_bios.ld.in
350
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
351
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_STAGE2ONLY linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld'
352
353
$(call MKESCAPE,$(BUILDDIR))/limine_stage2only.elf: $(OBJ_S2)
354
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld'
355
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call SHESCAPE,$(BUILDDIR))/linker_stage2only.ld' -o '$(call SHESCAPE,$@)' || \
356
		( echo "This error may mean that stage 2 was trying to use stage 3 symbols before loading stage 3" && \
357
		  false )
358
359
$(call MKESCAPE,$(BUILDDIR))/linker_nos2map.ld: linker_bios.ld.in
360
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
361
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP -DLINKER_NOS2MAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld'
362
363
$(call MKESCAPE,$(BUILDDIR))/empty:
364
	touch '$(call SHESCAPE,$@)'
365
366
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ)
367
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty'
368
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld'
369
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
370
	$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
371
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
372
		$(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 build-id.s2.bin build-id.s2.o && \
373
		$(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call SHESCAPE,$(BUILDDIR))/empty' --set-section-flags .note.GNU-stack=noload,readonly build-id.s2.o
374
	$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin'
375
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
376
		$(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 build-id.s3.bin build-id.s3.o && \
377
		$(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call SHESCAPE,$(BUILDDIR))/empty' --set-section-flags .note.GNU-stack=noload,readonly build-id.s3.o
378
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' -T'$(call SHESCAPE,$(BUILDDIR))/linker_nos2map.ld' -o '$(call SHESCAPE,$@)'
379
380
$(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_bios.ld.in
381
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
382
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
383
384
$(call MKESCAPE,$(BUILDDIR))/limine_nos3map.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/stage2.map.o
385
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty'
386
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
387
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
388
	$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
389
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
390
		$(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 build-id.s2.bin build-id.s2.o && \
391
		$(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call SHESCAPE,$(BUILDDIR))/empty' --set-section-flags .note.GNU-stack=noload,readonly build-id.s2.o
392
	$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin'
393
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
394
		$(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 build-id.s3.bin build-id.s3.o && \
395
		$(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call SHESCAPE,$(BUILDDIR))/empty' --set-section-flags .note.GNU-stack=noload,readonly build-id.s3.o
396
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' -T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' -o '$(call SHESCAPE,$@)'
397
398
$(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_bios.ld.in
399
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
400
	$(CC_FOR_TARGET) -x c -E -P -undef linker_bios.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
401
402
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/stage2.map.o $(call MKESCAPE,$(BUILDDIR))/full.map.o
403
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/empty'
404
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
405
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
406
	$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.bin'
407
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
408
		$(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 build-id.s2.bin build-id.s2.o && \
409
		$(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call SHESCAPE,$(BUILDDIR))/empty' --set-section-flags .note.GNU-stack=noload,readonly build-id.s2.o
410
	$(OBJCOPY_FOR_TARGET) -O binary --only-section=.note.gnu.build-id '$(call SHESCAPE,$@)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.bin'
411
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
412
		$(OBJCOPY_FOR_TARGET) -I binary -B i386 -O elf32-i386 build-id.s3.bin build-id.s3.o && \
413
		$(OBJCOPY_FOR_TARGET) --add-section .note.GNU-stack='$(call SHESCAPE,$(BUILDDIR))/empty' --set-section-flags .note.GNU-stack=noload,readonly build-id.s3.o
414
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' '$(call SHESCAPE,$(BUILDDIR))/build-id.s2.o' '$(call SHESCAPE,$(BUILDDIR))/build-id.s3.o' -T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' -o '$(call SHESCAPE,$@)'
415
416
endif
417
418
ifeq ($(TARGET),uefi-x86-64)
419
420
$(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
421
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
422
		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 64 '\.text'
423
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
424
	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
425
426
$(call MKESCAPE,$(BUILDDIR))/BOOTX64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
427
	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
428
	chmod -x '$(call SHESCAPE,$@)'
429
	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
430
431
$(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_x86_64.ld.in
432
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
433
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
434
435
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ)
436
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
437
	$(LD_FOR_TARGET) \
438
		-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
439
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
440
441
$(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_x86_64.ld.in
442
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
443
	$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_x86_64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
444
445
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o
446
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
447
	$(LD_FOR_TARGET) \
448
		-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
449
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
450
451
endif
452
453
ifeq ($(TARGET),uefi-aarch64)
454
455
$(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
456
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
457
		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 64 '\.text'
458
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
459
	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
460
461
$(call MKESCAPE,$(BUILDDIR))/BOOTAA64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
462
	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
463
	chmod -x '$(call SHESCAPE,$@)'
464
	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
465
466
$(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_aarch64.ld.in
467
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
468
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
469
470
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ)
471
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
472
	$(LD_FOR_TARGET) \
473
		-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
474
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
475
476
$(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_aarch64.ld.in
477
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
478
	$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_aarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
479
480
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o
481
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
482
	$(LD_FOR_TARGET) \
483
		-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
484
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
485
endif
486
487
ifeq ($(TARGET),uefi-riscv64)
488
489
$(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
490
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
491
		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 64 '\.text'
492
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
493
	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
494
495
$(call MKESCAPE,$(BUILDDIR))/BOOTRISCV64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
496
	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
497
	chmod -x '$(call SHESCAPE,$@)'
498
	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
499
500
$(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_riscv64.ld.in
501
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
502
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_riscv64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
503
504
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ)
505
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
506
	$(LD_FOR_TARGET) \
507
		-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
508
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
509
510
$(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_riscv64.ld.in
511
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
512
	$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_riscv64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
513
514
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o
515
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
516
	$(LD_FOR_TARGET) \
517
		-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
518
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
519
endif
520
521
ifeq ($(TARGET),uefi-loongarch64)
522
523
$(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
524
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
525
		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 64 '\.text'
526
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
527
	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
528
529
$(call MKESCAPE,$(BUILDDIR))/BOOTLOONGARCH64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
530
	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
531
	chmod -x '$(call SHESCAPE,$@)'
532
	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
533
534
$(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_loongarch64.ld.in
535
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
536
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_loongarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
537
538
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ)
539
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
540
	$(LD_FOR_TARGET) \
541
		-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
542
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
543
544
$(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_loongarch64.ld.in
545
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
546
	$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_loongarch64.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
547
548
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o
549
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
550
	$(LD_FOR_TARGET) \
551
		-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
552
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
553
endif
554
555
ifeq ($(TARGET),uefi-ia32)
556
557
$(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf
558
	cd '$(call SHESCAPE,$(BUILDDIR))' && \
559
		'$(call SHESCAPE,$(SRCDIR))/gensyms.sh' '$(call SHESCAPE,$<)' full 32 '\.text'
560
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$(BUILDDIR))/full.map.S' -o '$(call SHESCAPE,$@)'
561
	rm -f '$(call SHESCAPE,$(BUILDDIR))/full.map.S' '$(call SHESCAPE,$(BUILDDIR))/full.map.d'
562
563
$(call MKESCAPE,$(BUILDDIR))/BOOTIA32.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
564
	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
565
	chmod -x '$(call SHESCAPE,$@)'
566
	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 )) 2>/dev/null
567
568
$(call MKESCAPE,$(BUILDDIR))/linker_nomap.ld: linker_uefi_ia32.ld.in
569
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
570
	$(CC_FOR_TARGET) -x c -E -P -undef -DLINKER_NOMAP linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
571
572
$(call MKESCAPE,$(BUILDDIR))/limine_nomap.elf: $(OBJ)
573
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld'
574
	$(LD_FOR_TARGET) \
575
		-T'$(call SHESCAPE,$(BUILDDIR))/linker_nomap.ld' \
576
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
577
578
$(call MKESCAPE,$(BUILDDIR))/linker.ld: linker_uefi_ia32.ld.in
579
	$(MKDIR_P) '$(call SHESCAPE,$(BUILDDIR))'
580
	$(CC_FOR_TARGET) -x c -E -P -undef linker_uefi_ia32.ld.in -o '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
581
582
$(call MKESCAPE,$(BUILDDIR))/limine.elf: $(OBJ) $(call MKESCAPE,$(BUILDDIR))/full.map.o
583
	$(MAKE) -f common.mk '$(call SHESCAPE,$(BUILDDIR))/linker.ld'
584
	$(LD_FOR_TARGET) \
585
		-T'$(call SHESCAPE,$(BUILDDIR))/linker.ld' \
586
		$(LDFLAGS_FOR_TARGET) '$(call OBJESCAPE,$^)' -o '$(call SHESCAPE,$@)'
587
588
endif
589
590
-include $(HEADER_DEPS)
591
592
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.c
593
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
594
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
595
596
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.S
597
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
598
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
599
600
ifeq ($(TARGET),bios)
601
$(call MKESCAPE,$(BUILDDIR))/%.s2.o: ../%.s2.c
602
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
603
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(S2CFLAGS) $(CPPFLAGS_FOR_TARGET) -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
604
endif
605
606
ifeq ($(TARGET),bios)
607
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_ia32
608
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
609
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
610
611
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_bios_ia32
612
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
613
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
614
615
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_x86
616
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
617
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
618
endif
619
620
ifeq ($(TARGET),uefi-x86-64)
621
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_x86_64
622
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
623
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
624
625
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_uefi_x86_64
626
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
627
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
628
629
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_x86
630
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
631
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
632
endif
633
634
ifeq ($(TARGET),uefi-aarch64)
635
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_aarch64
636
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
637
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -x assembler-with-cpp -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
638
639
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_uefi_aarch64
640
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
641
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -x assembler-with-cpp -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
642
endif
643
644
ifeq ($(TARGET),uefi-riscv64)
645
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_riscv64
646
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
647
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -x assembler-with-cpp -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
648
649
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_uefi_riscv64
650
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
651
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -x assembler-with-cpp -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
652
endif
653
654
ifeq ($(TARGET),uefi-loongarch64)
655
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_loongarch64
656
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
657
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -x assembler-with-cpp -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
658
659
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_uefi_loongarch64
660
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
661
	$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) $(CPPFLAGS_FOR_TARGET) -x assembler-with-cpp -c '$(call SHESCAPE,$<)' -o '$(call SHESCAPE,$@)'
662
endif
663
664
ifeq ($(TARGET),uefi-ia32)
665
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_ia32
666
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
667
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
668
669
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_uefi_ia32
670
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
671
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
672
673
$(call MKESCAPE,$(BUILDDIR))/%.o: ../%.asm_x86
674
	$(MKDIR_P) "$$(dirname '$(call SHESCAPE,$@)')"
675
	nasm '$(call SHESCAPE,$<)' $(NASMFLAGS_FOR_TARGET) -o '$(call SHESCAPE,$@)'
676
endif
tab: 248 wrap: offon