diff options
Diffstat (limited to 'examples/Makefile')
-rw-r--r-- | examples/Makefile | 66 |
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) |