Getting warning about overriding recipe and ignoring old recipe on library proje

Sysprogs forums Forums VisualGDB Getting warning about overriding recipe and ignoring old recipe on library proje

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #8693
    CurtisHx
    Participant

    I have a library project that is producing 2 warnings when building.  Here are the warnings:

    Makefile:147: warning: overriding recipe for target 'Release/Drivers.a'
    Makefile:144: warning: ignoring old recipe for target 'Release/Drivers.a'
    

    Admittedly, I am not exactly fluent in makefiles.  How can I track down what is causing those warnings? This is the block of the makefile that’s causing the problems.

    ifeq ($(TARGETTYPE),STATIC)
    $(BINARYDIR)/$(TARGETNAME): $(all_objs)
     $(AR) -r $@ $^
    endif

    Here’s the entire makefile.

    #Generated by VisualGDB project wizard. 
    #Note: VisualGDB will automatically update this file when you add new sources to the project.
    #All other changes you make in this file will be preserved.
    #Visit http://visualgdb.com/makefiles for more details
    
    #VisualGDB: AutoSourceFiles #<--- remove this line to disable auto-updating of SOURCEFILES and EXTERNAL_LIBS
    
    TARGETNAME := Drivers.a
    #TARGETTYPE can be APP, STATIC or SHARED
    TARGETTYPE := STATIC
    
    to_lowercase = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
    
    CONFIG ?= DEBUG
    
    CONFIGURATION_FLAGS_FILE := $(call to_lowercase,$(CONFIG)).mak
    
    include $(CONFIGURATION_FLAGS_FILE)
    
    #LINKER_SCRIPT defined inside the configuration file (e.g. debug.mak) should override any linker scripts defined in shared .mak files
    CONFIGURATION_LINKER_SCRIPT := $(LINKER_SCRIPT)
    
    include $(ADDITIONAL_MAKE_FILES)
    
    ifneq ($(CONFIGURATION_LINKER_SCRIPT),)
    LINKER_SCRIPT := $(CONFIGURATION_LINKER_SCRIPT)
    endif
    
    ifneq ($(LINKER_SCRIPT),)
    LDFLAGS += -T$(LINKER_SCRIPT)
    endif
    
    ifeq ($(BINARYDIR),)
    error:
     $(error Invalid configuration, please check your inputs)
    endif
    
    SOURCEFILES := ProprietaryRfDriver.cpp
    EXTERNAL_LIBS := 
    EXTERNAL_LIBS_COPIED := $(foreach lib, $(EXTERNAL_LIBS),$(BINARYDIR)/$(notdir $(lib)))
    
    CFLAGS += $(COMMONFLAGS)
    CXXFLAGS += $(COMMONFLAGS)
    ASFLAGS += $(COMMONFLAGS)
    LDFLAGS += $(COMMONFLAGS)
    
    CFLAGS += $(addprefix -I,$(INCLUDE_DIRS))
    CXXFLAGS += $(addprefix -I,$(INCLUDE_DIRS))
    
    CFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS))
    CXXFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS))
    ASFLAGS += $(addprefix -D,$(PREPROCESSOR_MACROS))
    
    CXXFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS))
    CFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS))
    LDFLAGS += $(addprefix -framework ,$(MACOS_FRAMEWORKS))
    
    LDFLAGS += $(addprefix -L,$(LIBRARY_DIRS))
    
    ifeq ($(GENERATE_MAP_FILE),1)
    LDFLAGS += -Wl,-Map=$(BINARYDIR)/$(basename $(TARGETNAME)).map
    endif
    
    LIBRARY_LDFLAGS = $(addprefix -l,$(LIBRARY_NAMES))
    
    ifeq ($(IS_LINUX_PROJECT),1)
     RPATH_PREFIX := -Wl,--rpath='$$ORIGIN/../
     LIBRARY_LDFLAGS += $(EXTERNAL_LIBS)
     LIBRARY_LDFLAGS += -Wl,--rpath='$$ORIGIN'
     LIBRARY_LDFLAGS += $(addsuffix ',$(addprefix $(RPATH_PREFIX),$(dir $(EXTERNAL_LIBS))))
     
     ifeq ($(TARGETTYPE),SHARED)
     CFLAGS += -fPIC
     CXXFLAGS += -fPIC
     ASFLAGS += -fPIC
     LIBRARY_LDFLAGS += -Wl,-soname,$(TARGETNAME)
     endif
     
     ifneq ($(LINUX_PACKAGES),)
     PACKAGE_CFLAGS := $(foreach pkg,$(LINUX_PACKAGES),$(shell pkg-config --cflags $(pkg)))
     PACKAGE_LDFLAGS := $(foreach pkg,$(LINUX_PACKAGES),$(shell pkg-config --libs $(pkg)))
     CFLAGS += $(PACKAGE_CFLAGS)
     CXXFLAGS += $(PACKAGE_CFLAGS)
     LIBRARY_LDFLAGS += $(PACKAGE_LDFLAGS)
     endif 
    else
     LIBRARY_LDFLAGS += $(EXTERNAL_LIBS)
    endif
    
    LIBRARY_LDFLAGS += $(ADDITIONAL_LINKER_INPUTS)
    
    all_make_files := $(firstword $(MAKEFILE_LIST)) $(CONFIGURATION_FLAGS_FILE) $(ADDITIONAL_MAKE_FILES)
    
    ifeq ($(STARTUPFILES),)
     all_source_files := $(SOURCEFILES)
    else
     all_source_files := $(STARTUPFILES) $(filter-out $(STARTUPFILES),$(SOURCEFILES))
    endif
    
    source_obj1 := $(all_source_files:.cpp=.o)
    source_obj2 := $(source_obj1:.c=.o)
    source_obj3 := $(source_obj2:.s=.o)
    source_obj4 := $(source_obj3:.S=.o)
    source_obj5 := $(source_obj4:.cc=.o)
    source_objs := $(source_obj5:.cxx=.o)
    
    all_objs := $(addprefix $(BINARYDIR)/, $(notdir $(source_objs)))
    
    PRIMARY_OUTPUTS :=
    
    ifeq ($(GENERATE_BIN_FILE),1)
    PRIMARY_OUTPUTS += $(BINARYDIR)/$(basename $(TARGETNAME)).bin
    endif
    
    ifeq ($(GENERATE_IHEX_FILE),1)
    PRIMARY_OUTPUTS += $(BINARYDIR)/$(basename $(TARGETNAME)).ihex
    endif
    
    ifeq ($(PRIMARY_OUTPUTS),)
    PRIMARY_OUTPUTS := $(BINARYDIR)/$(TARGETNAME)
    endif
    
    all: $(PRIMARY_OUTPUTS)
    
    $(BINARYDIR)/$(basename $(TARGETNAME)).bin: $(BINARYDIR)/$(TARGETNAME)
     $(OBJCOPY) -O binary $< $@
    
    $(BINARYDIR)/$(basename $(TARGETNAME)).ihex: $(BINARYDIR)/$(TARGETNAME)
     $(OBJCOPY) -O ihex $< $@
     
    ifneq ($(LINKER_SCRIPT),)
    $(BINARYDIR)/$(TARGETNAME): $(LINKER_SCRIPT)
    endif
    
    ifeq ($(TARGETTYPE),APP)
    $(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS)
     $(LD) -o $@ $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP)
    endif
    
    ifeq ($(TARGETTYPE),SHARED)
    $(BINARYDIR)/$(TARGETNAME): $(all_objs) $(EXTERNAL_LIBS)
     $(LD) -shared -o $@ $(LDFLAGS) $(START_GROUP) $(all_objs) $(LIBRARY_LDFLAGS) $(END_GROUP)
    endif
     
    ifeq ($(TARGETTYPE),STATIC)
    $(BINARYDIR)/$(TARGETNAME): $(all_objs)
     $(AR) -r $@ $^
    endif
    
    -include $(all_objs:.o=.dep)
    
    clean:
    ifeq ($(USE_DEL_TO_CLEAN),1)
     cmd /C del /S /Q $(BINARYDIR)
    else
     rm -rf $(BINARYDIR)
    endif
    
    $(BINARYDIR):
     mkdir $(BINARYDIR)
    
    #VisualGDB: FileSpecificTemplates #<--- VisualGDB will use the following lines to define rules for source files in subdirectories
    $(BINARYDIR)/%.o : %.cpp $(all_make_files) |$(BINARYDIR)
     $(CXX) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)
    
    $(BINARYDIR)/%.o : %.c $(all_make_files) |$(BINARYDIR)
     $(CC) $(CFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)
    
    $(BINARYDIR)/%.o : %.S $(all_make_files) |$(BINARYDIR)
     $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)
    
    $(BINARYDIR)/%.o : %.s $(all_make_files) |$(BINARYDIR)
     $(CC) $(CFLAGS) $(ASFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)
    
    $(BINARYDIR)/%.o : %.cc $(all_make_files) |$(BINARYDIR)
     $(CC) $(CFLAGS) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)
    
    $(BINARYDIR)/%.o : %.cxx $(all_make_files) |$(BINARYDIR)
     $(CC) $(CFLAGS) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)
    
    #VisualGDB: GeneratedRules #<--- All lines below are auto-generated
    • This topic was modified 8 years, 5 months ago by CurtisHx.
    #8695
    support
    Keymaster

    Hi,

    The Makefile looks normal, so it’s hard to say what is causing this. Perhaps it has some strange inclusion loop and ends up included twice?

    Can you try re-creating the project with the VisualGDB wizard and check if the warning re-appears?

    #8696
    CurtisHx
    Participant

    The strange inclusion loop is entirely possible.  I made some significant changes to the project in order to support unit testing (this was before the 5.2 release with Unit Testing support).

    However, it has something to do with the project output being set for Static Library.  I changed it to executable, and those two warnings went away.

    #8698
    support
    Keymaster

    Hi,

    It’s still hard to say what exactly would be causing it. Normally the 2 line numbers reported by Make would point to the old and new definition, but in your example one of them points at an empty line (or a different Makefile). You can try commenting out the mentioned rule definition and running “make -d Release/Drivers.a” explicitly. If the build succeeds, examine the debug output generated by the -d option to see where else did it find the rule to build the file.

    #8729
    CurtisHx
    Participant

    Figured it out.  I had a linker script specified.  This project was originally an executable that got switched to a static library, and the linker script was still included.  I removed the linker script from the VisualGDB Project Properties -> Embedded Project page and the VisualGDB Project Properties -> Makefile settings page, and those warnings went away.

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.