Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lexborisov/Modest.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'test/Makefile')
-rw-r--r--test/Makefile110
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)