summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorKyle K <kylek389@gmail.com>2012-04-11 20:58:40 -0500
committerKyle Kaminski <kyle@kkaminsk.com>2012-04-11 20:58:40 -0500
commit09011a62c843d5756291328c2042f7cc5f59dcff (patch)
tree44b66e969cb7c4256fc178749be8cdc0a66343c3 /Makefile
downloadbst++-master.tar.gz
bst++-master.tar.bz2
bst++-master.zip
initial commitHEADmaster
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile44
1 files changed, 44 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..40dc53a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,44 @@
+BIN = bst
+SRC = main.cpp
+CC = g++
+CFLAGS = -Wall -std=gnu++98 -pedantic -MD
+DBGFLAGS = -g -O0
+ifdef DEBUG
+ CFLAGS += $(DBGFLAGS)
+else
+ CFLAGS += -O2 -march=native -mtune=native
+endif
+LDFLAGS = -lm
+
+OBJ_DIR = obj
+DEPS_DIR = obj
+BIN_DIR = bin
+
+CPP_FILES = $(filter %.cpp, $(SRC))
+DEP_FILES = $(addprefix $(DEPS_DIR)/, $(addsuffix .d, $(notdir $(subst .cpp,,$(SRC)))))
+OBJ_FILES = $(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(notdir $(subst .cpp,,$(SRC)))))
+
+INCL = -I/include
+
+define CPP_template
+$(1): $(2)
+ @mkdir -p $$(OBJ_DIR)
+ @mkdir -p $$(DEPS_DIR)
+ $$(CC) -c $$(CFLAGS) $$(INCL) $$< -o $$@
+endef
+
+all: $(BIN)
+
+$(foreach cppfile, $(CPP_FILES), $(eval $(call CPP_template, $(OBJ_DIR)/$(notdir $(subst .cpp,,$(cppfile))).o, $(cppfile))))
+
+$(BIN): $(OBJ_FILES)
+ @mkdir -p $(BIN_DIR)
+ $(CC) $(LDFLAGS) $(OBJ_FILES) -o $(BIN_DIR)/$@
+
+.PHONY: clean
+
+clean:
+ rm -rf $(OBJ_DIR)
+ rm -f $(BIN_DIR)/$(BIN)
+
+-include $(DEP_FILES)