summaryrefslogtreecommitdiffstats
path: root/pcm-assembler/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'pcm-assembler/Makefile')
-rw-r--r--pcm-assembler/Makefile68
1 files changed, 68 insertions, 0 deletions
diff --git a/pcm-assembler/Makefile b/pcm-assembler/Makefile
new file mode 100644
index 0000000..e3405a7
--- /dev/null
+++ b/pcm-assembler/Makefile
@@ -0,0 +1,68 @@
+# Tools
+
+CC = gcc
+
+# Project
+
+NAME = pcm-assembler
+
+# Directories
+
+BUILD = build
+OUTPUT = .
+
+# Sources
+
+SOURCES = pcm/pcm.c pcm-assembler.c
+OBJECTS = $(SOURCES:.c=.o)
+DEPS = $(SOURCES:.c=.d)
+
+# Compiler
+
+INCLUDES = .
+
+CFLAGS = $(foreach include,$(INCLUDES),-I$(include))
+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)