1# -*- makefile -*- 2# $Id: GNUmakef.inc,v 1.20 2011/02/18 21:47:20 stas_degteff Exp $ 3# Include file for GNU C++ build 4 5.PHONY: all clean sourcelist 6 7all: $(TARGET) 8 9include $(TOP)/GNUmakef.def 10 11# Messagebase formats 12include $(TOP)/MSGBase.def 13 14# Config files formats 15include $(TOP)/Config.def 16 17FOBJPATH=$(TOP)/$(OBJPATH)/$(PLATFORM)/$(TARGET) 18FDEPPATH=$(TOP)/$(OBJPATH)/$(PLATFORM)/$(TARGET) 19FLIBPATH=$(TOP)/$(LIBPATH)/$(PLATFORM) 20 21.SUFFIXES: .c .cpp .all .rc .cxx 22 23sourcelist: bld$(PLATFORM).inc 24 25bld$(PLATFORM).inc: $(TARGET).all 26 @echo making sourcelist 27 @$(GREP) -w $(PLATFORM) $< \ 28 | $(SED) 's;^\([[:alnum:]_]*\)[ ]*\([[:alnum:]_]*\).*;SOURCES+=\1.\2;' > $@; [ -s $@ ] || rm -f $@ 29 30$(FOBJPATH)/%$(OBJEXT): %.cpp 31 @echo building $(basename $<)$(OBJEXT) 32 $(CXX) -c -MD $(CPPFLAGS) -o $@ $< 33 @$(SHELL) -c "[ -s $(patsubst %.cpp,%.d,$<) ] && \ 34 echo -n $(FOBJPATH)/>$(FDEPPATH)/$(patsubst %.cpp,%.d,$<) && \ 35 $(CAT) $(patsubst %.cpp,%.d,$<)>>$(FDEPPATH)/$(patsubst %.cpp,%.d,$<) &&\ 36 rm $(patsubst %.cpp,%.d,$<) || true" 37 38$(FOBJPATH)/%$(OBJEXT): %.cxx 39 @echo building $(basename $<)$(OBJEXT) 40 $(CXX) -c -MD $(CPPFLAGS) -o $@ $< 41 @$(SHELL) -c "[ -s $(patsubst %.cxx,%.d,$<) ] && \ 42 echo -n $(FOBJPATH)/>$(FDEPPATH)/$(patsubst %.cxx,%.d,$<) && \ 43 $(CAT) $(patsubst %.cxx,%.d,$<)>>$(FDEPPATH)/$(patsubst %.cxx,%.d,$<) &&\ 44 rm $(patsubst %.cxx,%.d,$<) || true" 45 46$(FOBJPATH)/%$(OBJEXT): %.c 47 @echo building $(basename $<)$(OBJEXT) 48 $(CC) -c -MD $(CFLAGS) -o $@ $< 49 @$(SHELL) -c "[ -s $(patsubst %.c,%.d,$<) ] && \ 50 echo -n $(FOBJPATH)/>$(FDEPPATH)/$(patsubst %.c,%.d,$<) && \ 51 $(CAT) $(patsubst %.c,%.d,$<)>>$(FDEPPATH)/$(patsubst %.c,%.d,$<) && \ 52 rm $(patsubst %.c,%.d,$<) || true" 53 54ifeq ($(PLATFORM),cyg) 55$(FOBJPATH)/%$(OBJEXT): %.rc 56 @echo creating resources 57 @$(WINDRES) --use-temp-file -o $@ $< 58endif 59 60ifeq ($(PLATFORM),emx) 61$(FOBJPATH)/%.res: %.rc 62 @echo creating resources 63 @rc $(subst -I,-i ,$(INCS)) -x1 -r $< 64endif 65 66SOURCES= 67ifeq ($(wildcard $(TOP)/$(OBJPATH)/$(PLATFORM)/source.ls?),$(TOP)/$(OBJPATH)/$(PLATFORM)/source.lst) 68include bld$(PLATFORM).inc 69endif 70 71ifeq ($(PLATFORM),cyg) 72OBJS=$(addprefix $(FOBJPATH)/,$(patsubst %.rc,%$(OBJEXT),$(patsubst %.c,%$(OBJEXT),$(patsubst %.cpp,%$(OBJEXT),$(patsubst %.cxx,%$(OBJEXT),$(filter %.c %.cpp %.cxx %.rc,$(SOURCES))))))) 73else 74ifeq ($(PLATFORM),emx) 75OBJS=$(addprefix $(FOBJPATH)/,$(patsubst %.rc,%.res,$(patsubst %.c,%$(OBJEXT),$(patsubst %.cpp,%$(OBJEXT),$(patsubst %.cxx,%$(OBJEXT),$(filter %.c %.cpp %.cxx %.rc,$(SOURCES))))))) 76else 77OBJS=$(addprefix $(FOBJPATH)/,$(patsubst %.c,%$(OBJEXT),$(patsubst %.cpp,%$(OBJEXT),$(patsubst %.cxx,%$(OBJEXT),$(filter %.c %.cpp %.cxx %.rc,$(SOURCES)))))) 78endif 79endif 80DEPS = $(wildcard $(FDEPPATH)/*.d) 81ALLOBJS = $(wildcard $(FOBJPATH)/*.o) 82 83clean: 84 @echo cleaning... 85 @-rm -f $(ALLOBJS) $(DEPS) bld$(PLATFORM).inc 86 87ifneq ($(DEPS),) 88-include $(DEPS) 89endif 90