# --- START OF CONFIG --------------------------------------------------- # Edit the following variables for your own needs # toolchain configuration CXX=gcc LD=gcc # default build configuration # "make BUILD=release" does a release build BUILD:=release # basic build flags configuration CFLAGS+=-std=c99 -Wall -pedantic -Wno-long-long -D_POSIX_C_SOURCE=20120607L -D_FILE_OFFSET_BITS=64 LIBS+=-lm # library specific flags # wiringPi CFLAGS+= LIBS+=-lwiringPi # build type specific flags CFLAGS_debug=-O0 -ggdb -DDEBUG LIBS_debug= CFLAGS_release=-Os -pipe -march=armv6zk -mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard LIBS_release= # target configuration TARGET := ws2801d VERSION := 0.0.0 VCSVERSION := $(shell git rev-parse --short HEAD) # source files for the project SOURCE := $(shell find src/ -name '*.c') INCLUDES := $(shell find include/ -name '*.h') # --- END OF CONFIG ----------------------------------------------------- OBJ1=$(patsubst %.c, %.o, $(SOURCE)) OBJ=$(patsubst src/%, obj/$(BUILD)/%, $(OBJ1)) VERSIONSTR="\"$(VERSION)-$(VCSVERSION)\"" CFLAGS+=-Iinclude -DVERSION=$(VERSIONSTR) TARGETFILE := bin/$(BUILD)/$(TARGET) all: $(TARGET) CFLAGS+=$(CFLAGS_$(BUILD)) LIBS+=$(LIBS_$(BUILD)) .PHONY show_cflags: @echo --- Build parameters: ------------------------------------------ @echo CFLAGS\=$(CFLAGS) @echo LIBS\=$(LIBS) @echo SOURCE\=$(SOURCE) @echo ----------------------------------------------------------------- $(TARGET): show_cflags $(TARGETFILE) @echo ">>> $(BUILD) build complete." $(TARGETFILE): $(OBJ) $(INCLUDES) Makefile @echo Linking $@ ... @mkdir -p $(shell dirname $@) @$(LD) -o $(TARGETFILE) $(OBJ) $(LIBS) obj/$(BUILD)/%.o: src/%.c $(INCLUDES) Makefile @echo Compiling $< ... @mkdir -p $(shell dirname $@) @$(CXX) -c $(CFLAGS) -o $@ $< doc: doxygen doxygen.conf clean: rm -f $(TARGETFILE) rm -f $(OBJ)