diff --git a/Makefile b/Makefile index 2a41944..f00e6ef 100644 --- a/Makefile +++ b/Makefile @@ -47,14 +47,18 @@ LOCALDEPENDS = $(LOCALOBJECTS:.o.$(ARCH)=.d.$(ARCH)) SOURCES = $(wildcard *.cpp */*.cpp */*/*.cpp */*/*/*.cpp) FILTER = Libraries% SOURCES := $(filter-out $(FILTER),$(SOURCES)) -OBJECTS = $(SOURCES:.cpp=.o.$(ARCH)) -DEPENDS = $(OBJECTS:.o.$(ARCH)=.d.$(ARCH)) +REALOBJECTS := $(SOURCES:.cpp=.o.$(ARCH)) +DEPENDS = $(REALOBJECTS:.o.$(ARCH)=.d.$(ARCH)) +OBJECTS := RECURSIVE_PHONY +OBJECTS += $(REALOBJECTS) LIBRARIES = LIBFILES = TARGETS = # ---------- Recursive Targets ---------- +.PHONY: RECURSIVE_PHONY + $(LOCALOBJECTS): | $(SUBDIRS) $(OBJECTS): | $(SUBDIRS) @@ -78,6 +82,11 @@ define build_target_library_arch @mv $(1) $$(echo $(ROOTPATH)/lib/$(ARCH)/lib$(1) | sed 's/\.$(ARCH)//g') endef +define add_target_library_arch + $(1).$(ARCH): $$(OBJECTS) $$(LIBFILES) + $$(call build_target_library_arch,$$@,$$(REALOBJECTS) $$(LIBFILES)) +endef + define add_library LIBFILES += $(ROOTPATH)/Libraries/$(1)/lib/$(ARCH)/lib$(1).a LFLAGS += -l$(1) @@ -113,16 +122,31 @@ define build_target fi endef +define add_target_test_arch + $(1).$(ARCH): $$(OBJECTS) $$(LIBFILES) Test/Test.o.$(ARCH) + $$(call build_target_arch,$$@,$$(REALOBJECTS) $$(LIBFILES) Test/Test.o.$(ARCH)) +endef + define add_target_arch $(1).$(ARCH): $$(OBJECTS) $$(LIBFILES) Application/$(strip $(1)).o.$(ARCH) - $$(call build_target_arch,$$@,$$^) + $$(call build_target_arch,$$@,$$(REALOBJECTS) $$(LIBFILES) Application/$(strip $(1)).o.$(ARCH)) endef define add_target ifeq ($(.DEFAULT_GOAL),artifacts) .DEFAULT_GOAL := $(1) endif - $(eval $(call add_target_arch, $(1))) + + ifneq (,$$(findstring .a,$(1))) + $$(eval $$(call add_target_library_arch, $(1))) + else + ifeq ($(1),test) + $$(eval $$(call add_target_test_arch, $(1))) + else + $$(eval $$(call add_target_arch, $(1))) + endif + endif + $(1): $$(call build_target,$$@) endef