54 lines
2.0 KiB
Erlang
54 lines
2.0 KiB
Erlang
# --------------------------------------------------------------------------
|
|
# Linker Script
|
|
LINKER_SCRIPT = ../sections.ld
|
|
# Files to be compiled (important: defined prior to importing common.mk!)
|
|
CC_SOURCES = $(shell find * -name "*.cc" -a ! -name '.*' )
|
|
ASM_SOURCES = $(shell find * -name "*.asm" -a ! -name '.*' )
|
|
|
|
CXXFLAGS_INCLUDE = -I../../libsys -I../../kernel
|
|
CXXFLAGS_DEFAULT += $(CXXFLAGS_INCLUDE)
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Globale Variablen und Standard-Rezepte einbinden
|
|
include ../../tools/common.mk
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Default target
|
|
|
|
.DEFAULT_GOAL = all
|
|
all: $(BUILDDIR)/app.img
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Parameters & flags:
|
|
|
|
CXXFLAGS += $(CXXFLAGS_INCLUDE)
|
|
# Enable 16-byte compare-and-exchange instruction for debugging purposes (stack alignment)
|
|
CXXFLAGS += -mcx16
|
|
|
|
LDLIBS += -L../../libsys/$(BUILDDIR) -lsys
|
|
INITOBJ = ../$(BUILDDIR)/init.o
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Linked applications
|
|
$(BUILDDIR)/app: $(INITOBJ) $(ASM_OBJECTS) $(CC_OBJECTS) $(LINKER_SCRIPT) $(MAKEFILE_LIST)
|
|
@echo "LD $@"
|
|
@mkdir -p $(@D)
|
|
$(VERBOSE) $(CXX) $(CXXFLAGS) -Wl,-T $(LINKER_SCRIPT) -o $@ $(LDFLAGS) $(INITOBJ) $(ASM_OBJECTS) $(CC_OBJECTS) $(LDLIBS)
|
|
|
|
# --------------------------------------------------------------------------
|
|
# 'app.img' contains all section required for loading an application (flat binary)
|
|
|
|
$(BUILDDIR)/app.img: $(BUILDDIR)/app
|
|
@echo "OBJCOPY $@"
|
|
@if ! nm $< | grep "4000000 T start" >/dev/null 2>&1 ; then echo "Symbol 'start' is not first address" ; exit 1 ; fi
|
|
@mkdir -p $(@D)
|
|
$(VERBOSE) objcopy -O binary --set-section-flags .bss=alloc,load,contents $< $@
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Include dependency files (generated gcc -MM)
|
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
|
-include $(DEP_FILES)
|
|
endif
|
|
|