aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcathook <cat.hook31894@gmail.com>2013-11-23 03:18:17 +0800
committercathook <cat.hook31894@gmail.com>2013-11-23 03:18:17 +0800
commit1ab1516ebc0730a0bc63fa6d98dbfdc23840bd7b (patch)
tree5dcb484d1fe41093c46cec1089baa05b7909b611
parentffab2d06d8173723de1d61c3e439882f6feda161 (diff)
downloadctl-1ab1516ebc0730a0bc63fa6d98dbfdc23840bd7b.tar.gz
ctl-1ab1516ebc0730a0bc63fa6d98dbfdc23840bd7b.tar.zst
ctl-1ab1516ebc0730a0bc63fa6d98dbfdc23840bd7b.zip
add Makefile
-rw-r--r--Makefile76
1 files changed, 76 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..7b00a4e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,76 @@
+###################### path name ###########################
+LIB = lib
+INC = include
+SRC = src
+OBJ = obj
+TST = test
+
+################ compiler information: gcc #################
+C_OPT := -I$(INC) -L$(LIB) -O2
+A_OPT :=
+
+
+TEST_CC := gcc $(C_OPT) -o
+
+OBJ_CC := gcc $(C_OPT) -c -o
+DLIB_CC := gcc $(C_OPT) -shared -fPIC -o
+SLIB_CC := ar $(A_OPT) cvr
+
+######################## targets ###########################
+TARGET = utility vector #list queue stack dequeue heap map hash
+COMMON = utility
+
+TEST = vector
+
+#SRC_NAME := $(foreach n,$(TARGET),$(SRC)/$(n).c)
+#HEA_NAME := $(foreach n,$(TARGET),$(INC)/$(n).h)
+#OBJ_NAME := $(foreach n,$(TARGET),$(OBJ)/$(n).o)
+#SLIB_NAME := $(foreach n,$(TARGET),$(LIB)/lib$(n).a)
+#DLIB_NAME := $(foreach n,$(TARGET),$(LIB)/lib$(n).so)
+
+######################## setting ###########################
+.SUFFIXES:
+.PHONY: all clean test
+.PRECIOUS:
+.SECONDARY:
+
+######################## targets ###########################
+all: $(TARGET);
+
+$(TARGET): %: $(LIB)/%.a $(LIB)/%.so $(OBJ)/%.o;
+
+$(LIB)/%.a: $(OBJ)/%.o
+ @echo 'make static library ........ $@'
+ @$(SLIB_CC) $@ $<
+
+$(LIB)/%.so: $(SRC)/%.c $(INC)/%.h
+ @echo 'make dynamic library ....... $@'
+ @$(DLIB_CC) $@ $<
+
+$(OBJ)/%.o: $(SRC)/%.c $(INC)/%.h
+ @echo 'make obj file .............. $@'
+ @$(OBJ_CC) $@ $<
+
+test: $(addprefix $(TST)/test_,$(TEST))
+
+$(TST)/test_%: $(TST)/test_%.slib $(TST)/test_%.dlib $(TST)/test_%.oooo;
+
+$(TST)/test_%.slib: $(TST)/test_%.c $(LIB)/%.a $(LIB)/$(COMMON).a
+ @echo 'make test program for ...... $^'
+ @$(TEST_CC) $@ $^
+
+$(TST)/test_%.dlib: $(TST)/test_%.c $(LIB)/%.so $(LIB)/$(COMMON).so
+ @echo 'make test program for ...... $^'
+ @$(TEST_CC) $@ $^
+
+$(TST)/test_%.oooo: $(TST)/test_%.c $(OBJ)/%.o $(OBJ)/$(COMMON).o
+ @echo 'make test program for ...... $^'
+ @$(TEST_CC) $@ $^
+
+
+clean:
+ -rm -f $(LIB)/*
+ -rm -f $(OBJ)/*
+ -rm -f $(TST)/*.slib
+ -rm -f $(TST)/*.dlib
+ -rm -f $(TST)/*.oooo