summaryrefslogtreecommitdiff
path: root/examples/Makefile
diff options
context:
space:
mode:
authorPaul Kocialkowski2016-11-21 22:13:39 +0100
committerPaul Kocialkowski2016-11-22 13:27:38 +0100
commit76bc9028e9585a06717bb051ec72612e57b88b52 (patch)
tree4e07e48590702f1208f69d8bc57e6ed857136a07 /examples/Makefile
Canard include file and compiler initial commit
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'examples/Makefile')
-rw-r--r--examples/Makefile66
1 files changed, 66 insertions, 0 deletions
diff --git a/examples/Makefile b/examples/Makefile
new file mode 100644
index 0000000..57acf05
--- /dev/null
+++ b/examples/Makefile
@@ -0,0 +1,66 @@
+# Tools
+
+CC = canardcc
+
+# Project
+
+NAME = example
+
+# Directories
+
+BUILD = build
+OUTPUT = .
+
+# Sources
+
+SOURCES = example.c
+OBJECTS = $(SOURCES:.c=.o)
+DEPS = $(SOURCES:.c=.d)
+
+# Compiler
+
+CFLAGS =
+LDFLAGS =
+
+# Produced files
+
+BUILD_OBJECTS = $(addprefix $(BUILD)/,$(OBJECTS))
+BUILD_DEPS = $(addprefix $(BUILD)/,$(DEPS))
+BUILD_BINARY = $(BUILD)/$(NAME)
+BUILD_DIRS = $(sort $(dir $(BUILD_BINARY) $(BUILD_OBJECTS)))
+
+OUTPUT_BINARY = $(OUTPUT)/$(NAME)
+OUTPUT_DIRS = $(sort $(dir $(OUTPUT_BINARY)))
+
+all: $(OUTPUT_BINARY)
+
+$(BUILD_DIRS):
+ @mkdir -p $@
+
+$(BUILD_OBJECTS): $(BUILD)/%.o: %.c | $(BUILD_DIRS)
+ @echo " CC $<"
+ @$(CC) $(CFLAGS) -MMD -MF $(BUILD)/$*.d -c $< -o $@
+
+$(BUILD_BINARY): $(BUILD_OBJECTS)
+ @echo " LINK $@"
+ @$(CC) $(CFLAGS) -o $@ $(BUILD_OBJECTS) $(LDFLAGS)
+
+$(OUTPUT_DIRS):
+ @mkdir -p $@
+
+$(OUTPUT_BINARY): $(BUILD_BINARY) | $(OUTPUT_DIRS)
+ @echo " BINARY $@"
+ @cp $< $@
+
+.PHONY: clean
+clean:
+ @echo " CLEAN"
+ @rm -rf $(foreach object,$(basename $(BUILD_OBJECTS)),$(object)*) $(basename $(BUILD_BINARY))*
+ @rm -rf $(OUTPUT_BINARY)
+
+.PHONY: distclean
+distclean: clean
+ @echo " DISTCLEAN"
+ @rm -rf $(BUILD)
+
+-include $(BUILD_DEPS)