X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Frules.mk;h=ff8e7d674b72ecbc905e099a81c545ae28c731c6;hb=2ab79cb0c9069ed5084627954b6e2c3493a5c4af;hp=b152f566b70d0775b3b29b4a12c16f700291bb48;hpb=4294d908f73ad0e847a2132899832c9031ad0b60;p=bertos.git diff --git a/bertos/rules.mk b/bertos/rules.mk index b152f566..ff8e7d67 100644 --- a/bertos/rules.mk +++ b/bertos/rules.mk @@ -39,6 +39,7 @@ top_srcdir ?= $(shell pwd) # Virtual Product: based on target products may be different. # e.g. Embedded target = hex, s19, bin # Hosted = exe +# Library = lib.a TRG_TGT = $(TRG:%=$(OUTDIR)/%.tgt) RECURSIVE_TARGETS = all-recursive install-recursive clean-recursive @@ -61,9 +62,9 @@ tags: # Run testsuite .PHONY: check -check: +check: $(OUTDIR)/libunittest.a $L "Running testsuite" - $Q bertos/run_tests.sh + $Q test/run_tests.sh define build_target @@ -73,7 +74,7 @@ ifneq ($$($(1)_CROSS),) #In embedded we need s19, hex and bin $$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1).s19 $$(OUTDIR)/$(1).hex $$(OUTDIR)/$(1).bin else - #On Darwin architecture the assembly doesn't link correctly if this flag is set. + #On Darwin architecture the assembly doesn't link correctly if these flags are set. ifeq ($(shell uname | grep -c "Darwin"),1) LIST_FLAGS := "" MAP_FLAGS := "" @@ -81,8 +82,14 @@ else endif #use hosted specific map flags $(1)_MAP_FLAGS = $$(MAP_FLAGS_HOST) - #in hosted application we need only executable file. - $$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1) + + #Handle library creation + ifeq ($$($(1)_MAKELIB),1) + $$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1).a + else + #Otherwise in hosted application we need only executable file. + $$(OUTDIR)/$(1).tgt : $$(OUTDIR)/$(1) + endif endif $(1)_LDFLAGS += $$($(1)_MAP_FLAGS) @@ -136,6 +143,7 @@ endif $(1)_CC = $$($(1)_CROSS)$$(CC) $(1)_CXX = $$($(1)_CROSS)$$(CXX) $(1)_AS = $$($(1)_CROSS)$$(AS) +$(1)_AR = $$($(1)_CROSS)$$(AR) $(1)_OBJCOPY = $$($(1)_CROSS)$$(OBJCOPY) $(1)_STRIP = $$($(1)_CROSS)$$(STRIP) @@ -205,6 +213,13 @@ $$(OUTDIR)/$(1).elf $$(OUTDIR)/$(1)_nostrip: bumprev $$($(1)_OBJ) $$($(1)_LDSCRI @$$(MKDIR_P) $$(dir $$@) $Q $$($(1)_LD) $$($(1)_OBJ) $$(LIB) $$(LDFLAGS) $$($(1)_LDFLAGS) -o $$@ + +# Instructions to create a static library from object files +$$(OUTDIR)/$(1).a: bumprev $$($(1)_OBJ) + $L "$(1): Creating static library $$@" + @$$(MKDIR_P) $$(dir $$@) + $Q $$($(1)_AR) $$(ARFLAGS) $$($(1)_ARFLAGS) $$@ $$($(1)_OBJ) + # Strip debug info $$(OUTDIR)/$(1): $$(OUTDIR)/$(1)_nostrip $L "$(1): Generating stripped executable $$@" @@ -269,8 +284,8 @@ $$(OUTDIR)/$(1).rom: $$(OUTDIR)/$(1).elf endef -# Generate build rules for all targets -$(foreach t,$(TRG),$(eval $(call build_target,$(t)))) +# Generate build rules for all targets and libunittest +$(foreach t,$(TRG) libunittest,$(eval $(call build_target,$(t)))) # Generate Qt's moc files from headers # NOTE: moc totally sucks and can generate empty files for some error conditions,