58 # The list to depend on starts out empty |
58 # The list to depend on starts out empty |
59 $1 := |
59 $1 := |
60 ifeq ($$($1_TYPE), LIBRARY) |
60 ifeq ($$($1_TYPE), LIBRARY) |
61 $1_PREFIX = lib |
61 $1_PREFIX = lib |
62 $1_OUTPUT_SUBDIR := lib |
62 $1_OUTPUT_SUBDIR := lib |
63 $1_CFLAGS := $(CFLAGS_TESTLIB) |
63 $1_CFLAGS += $(CFLAGS_TESTLIB) |
64 $1_LDFLAGS := $(LDFLAGS_TESTLIB) $(call SET_SHARED_LIBRARY_ORIGIN) |
64 $1_LDFLAGS := $(LDFLAGS_TESTLIB) $(call SET_SHARED_LIBRARY_ORIGIN) |
65 $1_COMPILATION_TYPE := LIBRARY |
65 $1_COMPILATION_TYPE := LIBRARY |
66 else ifeq ($$($1_TYPE), PROGRAM) |
66 else ifeq ($$($1_TYPE), PROGRAM) |
67 $1_PREFIX = exe |
67 $1_PREFIX = exe |
68 $1_OUTPUT_SUBDIR := bin |
68 $1_OUTPUT_SUBDIR := bin |
69 $1_CFLAGS := $(CFLAGS_TESTEXE) |
69 $1_CFLAGS += $(CFLAGS_TESTEXE) |
70 $1_LDFLAGS := $(LDFLAGS_TESTEXE) |
70 $1_LDFLAGS := $(LDFLAGS_TESTEXE) |
71 $1_COMPILATION_TYPE := EXECUTABLE |
71 $1_COMPILATION_TYPE := EXECUTABLE |
72 else |
72 else |
73 $$(error Unknown type: $$($1_TYPE)) |
73 $$(error Unknown type: $$($1_TYPE)) |
74 endif |
74 endif |
75 |
75 |
76 # Locate all files with the matching prefix |
76 # Locate all files with the matching prefix |
77 $1_FILE_LIST := \ |
77 $1_FILE_LIST := \ |
78 $$(shell $$(FIND) $$($1_SOURCE_DIRS) -type f -name "$$($1_PREFIX)*.c") |
78 $$(shell $$(FIND) $$($1_SOURCE_DIRS) -type f \( -name "$$($1_PREFIX)*.c" \ |
|
79 -o -name "$$($1_PREFIX)*.cpp" \)) |
79 |
80 |
80 $1_EXCLUDE_PATTERN := $$(addprefix %/, $$($1_EXCLUDE)) |
81 $1_EXCLUDE_PATTERN := $$(addprefix %/, $$($1_EXCLUDE)) |
81 $1_FILTERED_FILE_LIST := $$(filter-out $$($1_EXCLUDE_PATTERN), $$($1_FILE_LIST)) |
82 $1_FILTERED_FILE_LIST := $$(filter-out $$($1_EXCLUDE_PATTERN), $$($1_FILE_LIST)) |
82 |
83 |
83 # Setup a compilation for each and every one of them |
84 # Setup a compilation for each and every one of them |
92 OBJECT_DIR := $$($1_OUTPUT_DIR)/support/$$(name), \ |
93 OBJECT_DIR := $$($1_OUTPUT_DIR)/support/$$(name), \ |
93 OUTPUT_DIR := $$($1_OUTPUT_DIR)/$$($1_OUTPUT_SUBDIR), \ |
94 OUTPUT_DIR := $$($1_OUTPUT_DIR)/$$($1_OUTPUT_SUBDIR), \ |
94 CFLAGS := $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \ |
95 CFLAGS := $$($1_CFLAGS) $$($1_CFLAGS_$$(name)), \ |
95 LDFLAGS := $$($1_LDFLAGS) $$($1_LDFLAGS_$$(name)), \ |
96 LDFLAGS := $$($1_LDFLAGS) $$($1_LDFLAGS_$$(name)), \ |
96 LIBS := $$($1_LIBS_$$(name)), \ |
97 LIBS := $$($1_LIBS_$$(name)), \ |
|
98 TOOLCHAIN := $(if $$(filter %.cpp, $$(file)), TOOLCHAIN_LINK_CXX, TOOLCHAIN_DEFAULT), \ |
97 OPTIMIZATION := $$(if $$($1_OPTIMIZATION_$$(name)),$$($1_OPTIMIZATION_$$(name)),LOW), \ |
99 OPTIMIZATION := $$(if $$($1_OPTIMIZATION_$$(name)),$$($1_OPTIMIZATION_$$(name)),LOW), \ |
98 COPY_DEBUG_SYMBOLS := false, \ |
100 COPY_DEBUG_SYMBOLS := false, \ |
99 STRIP_SYMBOLS := false, \ |
101 STRIP_SYMBOLS := false, \ |
100 )) \ |
102 )) \ |
101 $$(eval $1 += $$(BUILD_TEST_$$(name)) ) \ |
103 $$(eval $1 += $$(BUILD_TEST_$$(name)) ) \ |