Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • pi-v9
2 results

Makefile

Blame
  • 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: