summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2018-01-28 16:27:27 +0100
committerRichard Braun <rbraun@sceen.net>2018-02-04 20:37:04 +0100
commitef888871e0d2e03e59652c22e2431f571067184c (patch)
treeeb163312195469f2d068149931c63865325ad37e
parentb174f7fb7f936ca0365a851d3fd486e6baba357e (diff)
Preprocess the linker script
-rw-r--r--.gitignore1
-rw-r--r--Makefile14
-rw-r--r--src/kernel.lds.S (renamed from src/kernel.lds)0
3 files changed, 9 insertions, 6 deletions
diff --git a/.gitignore b/.gitignore
index 4e24883..43be2a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
.*
*.o
+*.lds
x1
cscope.out
diff --git a/Makefile b/Makefile
index eec3c9a..44ff058 100644
--- a/Makefile
+++ b/Makefile
@@ -159,9 +159,6 @@ X1_LDFLAGS += -nostdlib
# disabling it makes the linker script simpler.
X1_LDFLAGS += -Xlinker --build-id=none
-# Pass the linker script path to the linker.
-X1_LDFLAGS += -Xlinker -T src/kernel.lds
-
# Append user-provided linker flags, if any.
X1_LDFLAGS += $(LDFLAGS)
@@ -173,6 +170,8 @@ LIBS = -lgcc
BINARY = x1
+LDS = src/kernel.lds
+
SOURCES = \
src/boot.c \
src/boot_asm.S \
@@ -199,8 +198,8 @@ SOURCES += \
OBJECTS = $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(SOURCES)))
-$(BINARY): $(OBJECTS)
- $(CC) -o $@ $(X1_LDFLAGS) $^ $(LIBS)
+$(BINARY): $(LDS) $(OBJECTS)
+ $(CC) -o $@ $(X1_LDFLAGS) -Xlinker -T $(LDS) $(OBJECTS) $(LIBS)
%.o: %.c
$(CC) $(X1_CPPFLAGS) $(X1_CFLAGS) -c -o $@ $<
@@ -208,6 +207,9 @@ $(BINARY): $(OBJECTS)
%.o: %.S
$(CC) $(X1_CPPFLAGS) $(X1_CFLAGS) -c -o $@ $<
+%.lds: %.lds.S
+ $(CC) -E -P $(X1_CPPFLAGS) -o $@ $<
+
clean:
rm -f $(BINARY) $(OBJECTS)
@@ -223,4 +225,4 @@ clean:
# technique.
#
# [1] https://git.sceen.net/rbraun/x15.git/
-.PHONY: clean $(SOURCES)
+.PHONY: clean $(SOURCES) $(LDS).S
diff --git a/src/kernel.lds b/src/kernel.lds.S
index 3872a87..3872a87 100644
--- a/src/kernel.lds
+++ b/src/kernel.lds.S