Skip to content

Commit f3695da

Browse files
committed
Cleanup tool chain
Clean compiler flags Use .elf in linking
1 parent 70f0130 commit f3695da

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/build/obj
22
/build/kernel8.img
3-
/build/aarch64-unknown-linux-gnu
3+
/build/kernel8.elf
4+
/build/aarch64-unknown-linux-gnu

Makefile

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Compiler flags
22
AARCH64_TOOLCHAIN_DIR = build/aarch64-unknown-linux-gnu
3-
ARM_GCC = $(AARCH64_TOOLCHAIN_DIR)/bin/aarch64-unknown-linux-gnu-gcc
4-
CFLAGS = -mcpu=$(CPU) -fpic -ffreestanding
5-
CSRCFLAGS = -O2 -Wall -Wextra
6-
LDFLAGS = -ffreestanding -O2 -nostdlib
3+
ARMGNU = $(AARCH64_TOOLCHAIN_DIR)/bin/aarch64-unknown-linux-gnu
4+
CFLAGS = -Wall -Wextra -ffreestanding -mgeneral-regs-only -MMD -mcpu=$(CPU)
5+
ASMFLAGS = -MMD
6+
LDFLAGS = -nostdlib -nostartfiles
77

88
# Machine and emulator targets
99
CPU = cortex-a53
@@ -20,7 +20,9 @@ SRC_DIRS += src/common
2020
# Output directories
2121
BUILD_DIR = build
2222
OBJ_DIR = $(BUILD_DIR)/obj
23-
IMG_NAME = $(BUILD_DIR)/kernel8.img
23+
IMAGE = kernel8
24+
BIN_NAME = $(BUILD_DIR)/$(IMAGE).elf
25+
IMG_NAME = $(BUILD_DIR)/$(IMAGE).img
2426

2527
# Setup derived variables
2628
VPATH := src
@@ -35,21 +37,23 @@ HEADERS = $(foreach dir, $(SRC_DIRS), $(wildcard $(dir)/*.h))
3537
# Targets
3638
build: $(OBJECTS) $(HEADERS)
3739
@echo "==>" linking $(OBJECTS)
38-
$(ARM_GCC) -T $(BUILD_DIR)/linker.ld -o $(IMG_NAME) $(LDFLAGS) $(OBJECTS)
40+
$(ARMGNU)-ld $(LDFLAGS) -T $(BUILD_DIR)/linker.ld -o $(BIN_NAME) $(OBJECTS)
41+
$(ARMGNU)-objcopy $(BIN_NAME) -O binary $(IMG_NAME)
3942

4043
$(OBJ_DIR)/%_c.o: %.c
4144
@echo "==>" compiling $<
4245
@mkdir -p $(@D)
43-
$(ARM_GCC) $(CFLAGS) $(INCLUDES) -c $< -o $@ $(CSRCFLAGS)
46+
$(ARMGNU)-gcc $(CFLAGS) $(INCLUDES) -c $< -o $@
4447

4548
$(OBJ_DIR)/%_s.o: %.S
4649
@echo "==>" building $<
4750
@mkdir -p $(@D)
48-
$(ARM_GCC) $(CFLAGS) $(INCLUDES) -c $< -o $@
51+
$(ARMGNU)-gcc $(ASMFLAGS) $(INCLUDES) -c $< -o $@
4952

5053
clean:
5154
@echo "==>" removing assets
5255
rm -rf $(OBJ_DIR)
56+
rm -f $(BIN_NAME)
5357
rm -f $(IMG_NAME)
5458

5559
emu: build

0 commit comments

Comments
 (0)