Przeglądaj źródła

Add Library build target and Fix Rebuild issues

JDierkse 5 lat temu
rodzic
commit
2c3a30be49
1 zmienionych plików z 28 dodań i 4 usunięć
  1. 28 4
      Makefile

+ 28 - 4
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