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