comparison Makefile.gen @ 50:402446a76794

And more build system work.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 07 Apr 2017 06:04:07 +0300
parents b86eb06070ba
children 1ac8fdd932b3
comparison
equal deleted inserted replaced
49:b86eb06070ba 50:402446a76794
1 ###
2 ### Main build file
3 ###
1 4
5 # Tools
2 CC = $(BINTOOL_PREFIX)gcc 6 CC = $(BINTOOL_PREFIX)gcc
3 CXX = $(BINTOOL_PREFIX)g++ 7 CXX = $(BINTOOL_PREFIX)g++
4 AR = $(BINTOOL_PREFIX)ar 8 AR = $(BINTOOL_PREFIX)ar
5 RANLIB = $(BINTOOL_PREFIX)ranlib 9 RANLIB = $(BINTOOL_PREFIX)ranlib
6 WINDRES = $(BINTOOL_PREFIX)windres 10 WINDRES = $(BINTOOL_PREFIX)windres
7 11
8 INSTALL ?= install 12 INSTALL ?= install
9 MKDIR ?= mkdir 13 MKDIR ?= mkdir
10 MKDIR_P ?= $(MKDIR) -p 14 MKDIR_P ?= $(MKDIR) -p
11 15
16 # Common defines
17 DEFINES += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB
12 18
19 # Application stuff
13 APP_BIN=$(BINPATH)Syntilista$(EXEEXT) 20 APP_BIN=$(BINPATH)Syntilista$(EXEEXT)
14 APP_OBJS=main.o qrc_Syntilista.o moc_main.o 21 APP_OBJS=main.o qrc_Syntilista.o moc_main.o
15 APP_VERSION= 22 APP_VERSION := $(shell cat VERSION)
23 comma:= ,
24 APP_VERSION_COM := $(subst .,$(comma),$(APP_VERSION))
25 CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\"
16 26
17 LOGO_SVG ?= kampuscafe4.svg 27 LOGO_SVG ?= kampuscafe4.svg
18 ICON_PNGS = icon-16.png icon-32.png icon-48.png icon-64.png 28 ICON_PNGS = icon-16.png icon-32.png icon-48.png icon-64.png
19 29
20 30
31 # And target lists
21 TARGETS = $(APP_BIN) 32 TARGETS = $(APP_BIN)
22 NOBUILD_TARGETS += $(OBJPATH) $(BINPATH) 33 NOBUILD_TARGETS += $(OBJPATH) $(BINPATH)
23 NOINST_TARGETS += qrc_Syntilista.cpp 34 NOINST_TARGETS +=
24 # moc_main.cpp
25 35
26 36
27 ## 37 ###
28 ## Version strings 38 ### Target rules
29 ## 39 ###
30 APP_VERSION := $(shell cat VERSION)
31 comma:= ,
32 APP_VERSION_COM := $(subst .,$(comma),$(NN_VERSION))
33 CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\"
34
35
36 ##
37 ## Target rules
38 ##
39 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS) 40 all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)
40 41
41 42
42 moc_%.cpp: %.h 43 moc_predefs.h:
44 @echo "" > $(OBJPATH)dummy.cpp
45 @$(CXX) $(CXXFLAGS) -dM -E -o $@ $(OBJPATH)dummy.cpp
46
47 moc_%.cpp: %.h $(QT_MOC_RULES)
43 @echo " Qt::MOC $@ $<" 48 @echo " Qt::MOC $@ $<"
44 @$(QT_MOC) $(DEFINES) $(QT_MOC_FLAGS) $(INCPATH) $< -o $@ 49 @$(QT_MOC) $(DEFINES) $(QT_MOC_FLAGS) $(INCPATH) $< -o $@
45 50
46 ui_%.h: %.ui 51 ui_%.h: %.ui
47 @echo " Qt:UIC $@ $<" 52 @echo " Qt:UIC $@ $<"
59 $(OBJPATH)%.o: %.cpp 64 $(OBJPATH)%.o: %.cpp
60 @echo " CXX $@" 65 @echo " CXX $@"
61 @$(CXX) $(CXXFLAGS) $(DEFINES) $(INCPATH) -c -o $@ $< 66 @$(CXX) $(CXXFLAGS) $(DEFINES) $(INCPATH) -c -o $@ $<
62 67
63 68
69
64 ### 70 ###
65 ### Windows specific targets 71 ### Windows specific rules
66 ### 72 ###
67 $(OBJPATH)moc_predefs.h: $(QT5_PREFIX)/mkspecs/features/data/dummy.cpp 73 resource.rc: resource.rc.in icon.ico VERSION
68 @$(CXX) $(CXXFLAGS) -dM -E -o $@ $< 74 @sed -e "s/@APP_VERSION@/$(APP_VERSION)/g;s/@APP_VERSION_COM@/$(APP_VERSION_COM)/g;s#@APP_EXE@#$(notdir $(APP_BIN))#g" < $< > $@
69 75
70 resource.rc: resource.rc.in $VERSION 76 %.o: %.rc
71 @sed -e "s/@VERSION@/$(APP_VERSION)/g;s/@VERSION_COM@/$(APP_VERSION_COM)/g;s#@EXE@#$(notdir $(APP_BIN))#g" < $< > $@ 77 @echo " WINDRES $<"
72 78 @$(WINDRES) $< -O coff -o $@
73 resource.o: resource.rc
74 $(WINDRES) $< -O coff -o $@
75 79
76 80
77 ### 81 ###
78 ### Application rules 82 ### Application rules
79 ### 83 ###
81 inkscape --export-area-page -w $(patsubst icon-%.png,%,$@) -h $(patsubst icon-%.png,%,$@) -e "$@" "$<" 85 inkscape --export-area-page -w $(patsubst icon-%.png,%,$@) -h $(patsubst icon-%.png,%,$@) -e "$@" "$<"
82 86
83 logo.png: $(LOGO_SVG) 87 logo.png: $(LOGO_SVG)
84 inkscape --export-area-page -w 300 -h 280 -e "$@" "$<" 88 inkscape --export-area-page -w 300 -h 280 -e "$@" "$<"
85 89
86 Syntilista.ico: $(ICON_PNGS) 90 icon.ico: $(ICON_PNGS)
87 convert $< $+ 91 convert $< $@
88 92
89 qrc_Syntilista.cpp: Syntilista.qrc logo.png $(ICON_PNGS) 93 qrc_Syntilista.cpp: Syntilista.qrc logo.png $(ICON_PNGS)
90 @echo " Qt:RCC $@ $<" 94 @echo " Qt:RCC $@ $<"
91 @$(QT_RCC) -name "Syntilista" $< -o $@ 95 @$(QT_RCC) -name "Syntilista" $< -o $@
92 96
93 $(OBJPATH)main.o: main.cpp main.h ui_mainwindow.h ui_editperson.h 97 $(OBJPATH)main.o: main.cpp main.h ui_mainwindow.h ui_editperson.h
94 @echo " CXX $@" 98 @echo " CXX $@"
95 @$(CXX) $(CXXFLAGS) $(DEFINES) $(INCPATH) -c -o $@ $< 99 @$(CXX) $(CXXFLAGS) $(DEFINES) $(INCPATH) -c -o $@ $<
96 100
97 101
98 $(APP_BIN): $(addprefix $(OBJPATH),$(APP_OBJS)) 102 $(APP_BIN): $(addprefix $(OBJPATH),$(APP_OBJS)) $(APP_DEPS)
99 @echo " LINK $@" 103 @echo " LINK $@"
100 @$(CXX) $(LDFLAGS) -o $@ $+ $(LIBS) 104 @$(CXX) $(LDFLAGS) -o $@ $+ $(LIBS)
101 105
102 106
103 ## 107 ###
104 ## Special targets 108 ### Special targets
105 ## 109 ###
106 clean: 110 clean:
107 $(RM) $(TARGETS) $(NOINST_TARGETS) $(OBJPATH)*.o 111 $(RM) $(TARGETS) $(NOINST_TARGETS) $(OBJPATH)*.o
108 112
109 distclean: clean 113 distclean: clean
110 $(RM) *~ core *.core 114 $(RM) *~ core *.core