aboutsummaryrefslogtreecommitdiff
path: root/test-curl/test/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'test-curl/test/Makefile')
-rw-r--r--test-curl/test/Makefile94
1 files changed, 94 insertions, 0 deletions
diff --git a/test-curl/test/Makefile b/test-curl/test/Makefile
new file mode 100644
index 0000000..e1a5035
--- /dev/null
+++ b/test-curl/test/Makefile
@@ -0,0 +1,94 @@
+# vim:ts=4:sw=4:noexpandtab
+MAKEFLAGS += --no-builtin-rules
+
+# This variable can be overwritten to show executed commands
+Q ?= @
+
+# Default output path. This is used when output (writable) directory is different
+# than project directory. You shouldn't be setting it by hand, but it is used in
+# external Makefiles.
+O ?= .
+
+# Load configuration
+-include $(O)/.config.mk
+
+.PHONY: all
+all: $(O)/test
+
+ifeq ($(DEBUG),yes)
+CFLAGS += -ggdb -DDEBUG
+endif
+CFLAGS += -Wall
+CFLAGS += -include $(O)/build/config.h
+LDFLAGS += -lcurl -levent
+
+# Apply CPREFIX
+CC:=$(CPREFIX)$(CC)
+
+### Source files list ###########################
+SRC = test.c
+### End of source files list ####################
+
+CSRC = $(patsubst %,src/%,$(filter %.c,$(SRC)))
+
+OBJ = $(patsubst src/%.c,$(O)/build/%.o,$(CSRC))
+DEP = $(patsubst src/%.c,$(O)/build/%.d,$(CSRC))
+
+.PHONY: help
+help:
+ @echo "General extendable macro language make targets:"
+ @echo " all|test - Build geml executable"
+ @echo " help - Prints this text help."
+ @echo " clean - Cleans builded files"
+ @echo " distclean - Same as clean but also removes distributed generated files"
+ @echo "Some enviroment variables to be defined:"
+ @echo " Q - Define emty to show executed commands"
+
+# Cleaning
+.PHONY: clean
+clean::
+ @echo " CLEAN build"
+ $(Q)$(RM) -r $(O)/build
+ @echo " CLEAN test"
+ $(Q)$(RM) $(O)/test
+.PHONY: distclean
+distclean:: clean
+ @echo " CLEAN configuration"
+ $(Q)$(RM) $(O)/.config
+
+## Building targets ##
+ifeq (,$(filter clean distclean help docs serve-docs clean-docs \
+ ,$(MAKECMDGOALS))) # Ignore build targets if goal is not building
+
+ifeq ($(DEBUG),yes)
+-include $(DEP) # If developing, use dependencies from source files
+.PHONY: dependency dep
+dependency dep:: $(DEP)
+$(DEP): $(O)/build/%.d: src/%.c
+ @mkdir -p "$(@D)"
+ @echo " DEP $@"
+ $(Q)$(CC) -MM -MG -MT '$*.o $@' $(CFLAGS) $< -MF $@
+endif # DEBUG
+
+$(O)/test: $(OBJ)
+ @echo " LD $@"
+ $(Q)$(CC) $(LDFLAGS) $^ -o $@
+
+$(OBJ): $(O)/build/%.o: src/%.c $(O)/build/config.h
+ @mkdir -p "$(@D)"
+ @echo " CC $@"
+ $(Q)$(CC) -c $(CFLAGS) $< -o $@
+
+$(O)/build/config.h: $(O)/.config
+ @mkdir -p "$(@D)"
+ @echo " CONF $@"
+ $(Q)$(O)/configure --op-h > $@
+endif
+
+## Configuation files ##
+$(O)/.config:
+ $(error Please run configure script first)
+
+$(O)/.config.mk: $(O)/.config
+ @echo " CONF $@"
+ $(Q)$(O)/configure --op-makefile > $@