From e24186fc1917c5e8b91924af0c3c7c55816ff5d6 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 25 Jan 2021 22:01:00 +0100 Subject: Introducing MIC --- Makefile | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b31e5c8 --- /dev/null +++ b/Makefile @@ -0,0 +1,61 @@ +.POSIX: +.SUFFIXES: + +# Source code location and files to watch for changes. +SRC_DIR := src +SRC_MAIN := $(SRC_DIR)/main.c +SRC_APP := $(SRC_DIR)/app.c +WATCH_SRC := $(wildcard $(SRC_DIR)/*.c) +WATCH_SRC += $(wildcard $(SRC_DIR)/*.h) + +# Output library names and executables. +BIN_NAME := app +LIB_NAME := libmic.so +BUILD_DIR := build +BIN := $(BUILD_DIR)/$(BIN_NAME) +LIB := $(BUILD_DIR)/$(LIB_NAME) +LIB_DIR := $(BUILD_DIR) + +# Compiler and linker configuration. +CC := gcc +CFLAGS := -Wall -Wextra -pedantic -std=c99 +LDFLAGS := +LDLIBS := +RELEASE_CFLAGS := -DNDEBUG -O2 +DEBUG_CFLAGS := -DDEBUG -g + +.PHONY: dynamic static clean run + +# Setup debug/release builds. +# make clean && make DEBUG=0 +# make clean && make DEBUG=1 +DEBUG ?= 0 +ifeq ($(DEBUG), 1) + CFLAGS += $(DEBUG_CFLAGS) +else + CFLAGS += $(RELEASE_CFLAGS) +endif + +dynamic: CFLAGS += -fPIC +dynamic: CFLAGS += -DLIB_NAME=\"$(LIB_NAME)\" +dynamic: CFLAGS += -DLIB_DIR=\"$(LIB_DIR)\" +dynamic: LDFLAGS += -ldl +dynamic: $(BUILD_DIR) $(LIB) $(BIN) + +static: SRC_MAIN += $(SRC_APP) +static: $(BUILD_DIR) $(BIN) + +$(BIN): $(SRC_MAIN) $(WATCH_SRC) + $(CC) $(CFLAGS) $(LDFLAGS) -o $(BIN) $(SRC_MAIN) $(LDLIBS) + +$(LIB): $(SRC_APP) $(WATCH_SRC) + $(CC) $(CFLAGS) -shared $(LDFLAGS) -o $@ $(SRC_APP) $(LDLIBS) + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +run: $(BIN) + exec $(BIN) + +clean: + rm -r $(BUILD_DIR) -- cgit v1.2.1