Select Git revision
Forked from
ACS / Public / Teaching materials / Grundgebiete der Informatik 4 / Grundgebiete der Informatik 4
Up to date with the upstream repository.
Stefan Lankes authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Makefile 1.08 KiB
#ACHTUNG: alle *.asm u. *.c Dateien im Ordner dieses Makefiles
# werden zur ausführbaren Datei "start" zusammengebunden!
UNAME := $(shell uname)
ARCH := $(shell uname -m)
MAKE = make
CC = gcc
CFLAGS = -Wall -O0 -g #-pthread, nur für POSIX-Threads notwendig
RM = rm -rf #rm = Unix-Befehl remove = Dateien löschen
ASM = nasm
ifeq ($(UNAME), Darwin)
ASMFLAGS = -f macho64 -O0 -g --prefix _
LDFLAGS = -Wl,-no_pie
ifeq ($(ARCH), arm64)
X86_ON_M1=arch -x86_64
endif
else
ASMFLAGS = -f elf64 -O0 -g -F dwarf
LDFLAGS = -static
endif
NAME = start # Name des Programms/der ausführbaren Datei
# Objekt-Datei-Liste generieren aus Quell-Datei-Listen
OBJS = $(patsubst %.c, %.o, $(wildcard *.c))
OBJS += $(patsubst %.asm, %.o, $(wildcard *.asm))
.PHONY: clean
# Erzeugung von Objektdateien (*.o) aus den Quellcodedateien (*.c u. *.asm)
%.o : %.c
$(X86_ON_M1) $(CC) -c $(CFLAGS) -o $@ $<
%.o : %.asm
$(ASM) $(ASMFLAGS) -o $@ $<
all:
$(MAKE) $(NAME)
$(NAME): $(OBJS)
$(X86_ON_M1) $(CC) $(LDFLAGS) $(CFLAGS) -o $(NAME) $(OBJS)
test:
./$(NAME)
clean:
$(RM) *.o $(NAME)
depend: