changeset 9:1102727bbfcd

merge
author mir3636
date Sun, 16 Dec 2018 12:36:01 +0900
parents 01422193c564 (current diff) 60f514338238 (diff)
children 290b6ced4943
files
diffstat 1 files changed, 78 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/makefile-armgccbc	Sun Dec 16 12:36:01 2018 +0900
@@ -0,0 +1,78 @@
+###############################################################################
+#	makefile
+#	 by Alex Chadwick
+#
+#	A makefile script for generation of raspberry pi kernel images.
+###############################################################################
+
+# The toolchain to use. arm-none-eabi works, but there does exist 
+# arm-bcm2708-linux-gnueabi.
+ARMGNU ?= /usr/local/arm-cbc/bin/arm-none-eabi
+# ARMGNU ?= arm-none-eabi
+
+# The intermediate directory for compiled object files.
+BUILD = build/
+
+# The directory in which source files are stored.
+SOURCE = source/
+
+# The name of the output file to generate.
+TARGET = kernel.img
+
+# The name of the assembler listing file to generate.
+LIST = kernel.list
+
+# The name of the map file to generate.
+MAP = kernel.map
+
+# The name of the linker script to use.
+LINKER = kernel.ld
+
+# The names of libraries to use.
+LIBRARIES := csud
+
+#CFLAGS := -mfloat-abi=hard -fno-pic -static -Wno-packed-bitfield-compat -fno-builtin -fno-strict-aliasing -fshort-wchar -O2 -Wall -MD -ggdb -Werror -fno-omit-frame-pointer -fno-stack-protector -Wa,-march=armv6 -Wa,-mcpu=arm1176jzf-s -I include
+CFLAGS := -mfpu=vfpv4 -mfloat-abi=hard -fno-pic -static -Wno-packed-bitfield-compat -fno-builtin -fno-strict-aliasing -fshort-wchar -O2 -Wall -MD -ggdb -fno-omit-frame-pointer -fno-stack-protector -Wa,-march=armv6 -Wa,-mcpu=arm1176jzf-s -I include
+
+CC := gcc -B/usr/local/arm-cbc/bin/arm-none-eabi-
+
+# The names of all object files that must be generated. Deduced from the 
+# assembly code files in source.
+OBJECTS := $(patsubst $(SOURCE)%.s,$(BUILD)%.o,$(wildcard $(SOURCE)*.s))
+
+C_OBJS := $(patsubst $(SOURCE)%.c,$(BUILD)%.o,$(wildcard $(SOURCE)*.c))
+
+# Rule to make everything.
+all: $(TARGET) $(LIST)
+
+# Rule to remake everything. Does not include clean.
+#rebuild: all
+
+# Rule to make the listing file.
+$(LIST) : $(BUILD)output.elf
+	$(ARMGNU)-objdump -d $(BUILD)output.elf > $(LIST)
+
+# Rule to make the image file.
+$(TARGET) : $(BUILD)output.elf
+	$(ARMGNU)-objcopy $(BUILD)output.elf -O binary $(TARGET) 
+
+# Rule to make the elf file.
+$(BUILD)output.elf : $(OBJECTS) $(C_OBJS) $(LINKER)
+	$(ARMGNU)-ld --no-undefined $(OBJECTS) $(C_OBJS) -L. $(patsubst %,-l %,$(LIBRARIES)) -Map $(MAP) -o $(BUILD)output.elf -T $(LINKER)
+
+# Rule to make the object files.
+$(BUILD)%.o: $(SOURCE)%.s $(BUILD)
+	$(ARMGNU)-as -I $(SOURCE) $< -o $@
+
+$(BUILD)%.o: $(SOURCE)%.c $(BUILD)
+	$(ARMGNU)-$(CC) -c $(CFLAGS) $<  -o $@
+
+$(BUILD):
+	mkdir $@
+
+# Rule to clean files.
+clean : 
+	-rm -rf $(BUILD)
+	-rm -f $(TARGET)
+	-rm -f $(LIST)
+	-rm -f $(MAP)