############## # Fool Stack # ############## EXE=fool-stack ############ compiler ############ #use our cross compiler CC=i686-foolos-gcc AS=i686-foolos-as #sorry just this CC=i686-elf-gcc AS=i686-elf-as #regular host compilation CC=gcc AS=as ############ compiler flags ############ #https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html CFLAGS= CFLAGS+=-DPLATFORM_LINUX #CFLAGS+=-fvar-tracking #CFLAGS+=-DGIT_REVISION=\"$(GIT_REVISION)\" #CFLAGS+=-ffreestanding # do we need this if using own compiler? #CFLAGS+=-nostdlib #CFLAGS+=-Og CFLAGS+=-O0 CFLAGS+=-I. #CFLAGS+=-I/home/miguel/temp/foolos/usr/i686-foolos/include/ #CFLAGS+=-I./asm #CFLAGS+=-I./kernel #CFLAGS+=-I./driver #CFLAGS+=-I./fs CFLAGS+=-gstabs #CFLAGS+=-fstack-protector-all #CFLAGS+=-fno-zero-initialized-in-bss #CFLAGS+=-fdata-sections -ffunction-sections #CFLAGS+= -w # disable all warnings #CFLAGS+= -Wimplicit-function-declaration CFLAGS+= -Wall #CFLAGS+= -Wextra #CFLAGS+= -pedantic CFLAGS+= -Werror CFLAGS+= -Werror=implicit-function-declaration CFLAGS+= -Wno-unused-variable CFLAGS+= -Wno-unused-function CFLAGS+= -Wno-int-conversion CFLAGS+= -Wno-implicit-int CFLAGS+= -Wno-incompatible-pointer-types CFLAGS+= -Wno-discarded-qualifiers CFLAGS+= -Wno-unused-but-set-variable #CFLAGS+ = -Wall -Wextra -std=c89 -pedantic -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition ######## linker flags #################### LDFLAGS= LDLIBS+=-lgcc ########## assembler flags ################# ASFLAGS= ASFLAGS+=-gstabs ########## verbosity ##################3 #V = 0 #CC = @echo "Compiling (i686-elf-gcc) $<..."; i686-elf-gcc #AS = @echo "Assembling (i686-elf-as) $<..."; i686-elf-as #CC_1 = $(CCC) #CC = $(CC_$(V)) ############ source and object files and their deps ############ #source files SOURCES= SOURCES+=$(wildcard *.c) #derive object files OBJECTS=$(patsubst %.c, %.o, $(SOURCES)) #derive and include deps DEPS=$(patsubst %.c, %.d, $(SOURCES)) # default target new: clean tags all newrun: new run -include ../Makefile.common -include $(DEPS) run: all ./$(EXE) all: $(OBJECTS) @echo "Compiling and linking objects ..." $(CC) *.o -o $(EXE) deps: $(DEPS) @echo "Generating deps ..." tags: @echo "Generating ctags .."; ctags --recurse=yes . clean: @echo "Cleaning up..."; rm -f *.d *.o tags $(EXE)