diff options
Diffstat (limited to 'test/Makefile')
-rw-r--r-- | test/Makefile | 110 |
1 files changed, 75 insertions, 35 deletions
diff --git a/test/Makefile b/test/Makefile index b7dc66d..e1a8bf1 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,50 +1,90 @@ TARGET := test -SRCDIR := test +SRCDIR := . CC ?= gcc -LIBS := ../lib/libmodest_static.a -LDLIBS := $(LIBS) -INCLUDE_TMP := include +# ARGS +# +# BINARY_OPTIMIZATION_LEVEL, default -O2 +# MODEST_BUILD_WITHOUT_THREADS, YES or (NO or undefined), default undefined +# -MODEST_OPTIMIZATION_LEVEL ?= -O2 +.DEFAULT_GOAL := all -CFLAGS ?= -Wall -Werror -CFLAGS += $(MODEST_OPTIMIZATION_LEVEL) -Wno-unused-variable -fPIC --std=c99 -I../include +#******************** +# other Makefile +#*************** +BINARY_PATH_RELATIVE := .. +MODEST_SOURCE := $(BINARY_PATH_RELATIVE)/source +include $(BINARY_PATH_RELATIVE)/Makefile.bin.cfg -MODEST_BUILD_WITHOUT_THREADS ?= NO -ifeq ($(MODEST_BUILD_WITHOUT_THREADS),YES) - $(info Build Tests without POSIX Threads) -else - $(info Build Examples with POSIX Threads) - CFLAGS += -pthread -endif +BINARY_TO_DIR := $(BINARY_PATH_RELATIVE)/$(TEST_DIR_BASE) +TEST_DIR_RELATIVE := $(BINARY_PATH_RELATIVE)/$(TEST_DIR) -ifeq ($(OS),Windows_NT) -else - UNAM := $(shell uname -s) - ifeq ($(UNAM),Darwin) - else - CFLAGS += -D_POSIX_C_SOURCE=199309L - endif -endif +#******************** +# Build +#*************** +BINARY_BUILD_MODULES ?= $(dir $(wildcard $(SRCDIR)/*/)) +BINARY_BUILD_MODULES_LIST := $(strip $(foreach dir,$(BINARY_BUILD_MODULES),$(word 2, $(subst $(MODEST_DIR_SEPARATOR), , $(dir))) )) +BINARY_BUILD_MODULES_MAKEFILES_LIST := $(foreach dir,$(BINARY_BUILD_MODULES_LIST),$(dir)/Makefile.mk) -find_files_h = $(wildcard $(dir)/*.h) -find_files_c = $(wildcard $(dir)/*.c) +#******************** +# Targets +#*************** +BINARY_BUILD_MODULES_TARGET := $(BINARY_BUILD_MODULES_LIST) +BINARY_BUILD_MODULES_TARGET_ALL := $(foreach dir,$(BINARY_BUILD_MODULES_TARGET),$(dir)_all) +BINARY_BUILD_MODULES_TARGET_CLEAN := $(foreach dir,$(BINARY_BUILD_MODULES_TARGET),$(dir)_clean) -SUBDIRS := mycss myhtml myhtml/utils -HDRS += $(foreach dir,$(SUBDIRS),$(find_files_h)) -SRCS += $(foreach dir,$(SUBDIRS),$(find_files_c)) -#SRCS_FN += $(foreach dir,$(SUBDIRS),$(notdir $(find_files_c))) +#******************** +# Utils +#*************** +define BYNARY_UTILS_NEW_LINE -OBJS := $(patsubst %.c,%,$(SRCS)) -#OBJS_RM := $(patsubst %.c,%,$(SRCS_FN)) -all: $(TARGET) +endef +BINARY_UTILS_OBJS = $(patsubst %.c,%,$(foreach dir,$2,$(wildcard $(SRCDIR)/$1/$(dir)/*.c))) +BINARY_UTILS_CREATE_DIR = mkdir -p $(BINARY_TO_DIR)/$(subst /.,,$1) $(BYNARY_UTILS_NEW_LINE) +BINARY_UTILS_CREATE_DIRS = $(foreach dir,$(BINARY_BUILD_MODULES_LIST),$(foreach path,$($(dir)_dirs),$(call BINARY_UTILS_CREATE_DIR,$(dir)/$(path)))) -$(TARGET): $(OBJS) +#******************** +# Include all modules Makefile.mk +#*************** +include $(BINARY_BUILD_MODULES_MAKEFILES_LIST) -clean: - rm -f $(OBJS) +#******************** +# Set ARGS for flags +#*************** +override CFLAGS += $(BINARY_CFLAGS) +override LDFLAGS += $(BINARY_LDFLAGS) +override LDLIBS += $(BINARY_LIBRARIES) -.PHONY: all
\ No newline at end of file +#******************** +# Objects +#*************** +BINARY_BUILD_EXECUTE ?= $(foreach dir,$(BINARY_BUILD_MODULES_TARGET),$($(dir)_objs)) +BINARY_BUILD_EXECUTE_CLEAN := $(foreach path,$(BINARY_BUILD_EXECUTE),$(subst ./,,$(path))) +BINARY_BUILD_EXECUTE_TO_CLEAN := $(foreach path,$(BINARY_BUILD_EXECUTE_CLEAN),rm -f $(BINARY_TO_DIR)/$(path) $(BYNARY_UTILS_NEW_LINE)) +BINARY_BUILD_DIRS_TO_CLEAN := $(foreach path,$(BINARY_BUILD_MODULES_LIST),rm -rf $(BINARY_TO_DIR)/$(path) $(BYNARY_UTILS_NEW_LINE)) +BINARY_BUILD_EXECUTE_COPY := $(foreach path,$(BINARY_BUILD_EXECUTE_CLEAN),cp $(path) $(BINARY_TO_DIR)/$(dir $(path)) $(BYNARY_UTILS_NEW_LINE)) +BINARY_BUILD_EXECUTE_COPY_ALL := $(BINARY_UTILS_CREATE_DIRS) $(BINARY_BUILD_EXECUTE_COPY) +BINARY_BUILD_RUN_ALL_TEST := $(foreach dir,$(BINARY_BUILD_EXECUTE_CLEAN),$(dir) $($(word 1,$(subst /, ,$(dir)))_$(notdir $(dir))) $(BYNARY_UTILS_NEW_LINE)) + +#******************** +# Target options +#*************** +all: build + $(BINARY_BUILD_EXECUTE_COPY_ALL) + +build: $(BINARY_BUILD_EXECUTE_CLEAN) + +clean: $(BINARY_BUILD_MODULES_TARGET_CLEAN) + $(BINARY_BUILD_EXECUTE_TO_CLEAN) + $(BINARY_BUILD_DIRS_TO_CLEAN) + +copy: + $(BINARY_BUILD_EXECUTE_COPY_ALL) + +run: all + $(BINARY_BUILD_RUN_ALL_TEST) + +.PHONY: all copy clean $(BINARY_BUILD_MODULES_TARGET_ALL) |