view Makefile.gen @ 259:14ed3a2500e6

Fix build.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 24 Dec 2019 05:14:48 +0200
parents daaad6ad8212
children 847917a62ea2
line wrap: on
line source

###
### Main build file
###

CFLAGS += -O2 -W -Wall -Wextra
CXXFLAGS += -O2 -W -Wall -Wextra -std=c++11

# Tools
ifneq ($(BINTOOL_PREFIX),)
CC = $(BINTOOL_PREFIX)gcc
CXX = $(BINTOOL_PREFIX)g++
AR = $(BINTOOL_PREFIX)ar
endif
RANLIB = $(BINTOOL_PREFIX)ranlib
WINDRES = $(BINTOOL_PREFIX)windres

INSTALL ?= install
MKDIR ?= mkdir
MKDIR_P ?= $(MKDIR) -p

# Common defines
DEFINES += -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG \
	-DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB \
	-DQT_CORE_LIB

# Application stuff
APP_IMG=img/
APP_BIN=$(BINPATH)Syntilista$(EXEEXT)

APP_HDRS=\
	src/main.h \
	src/util.h \
	src/ui_viewtransactions.h \
	src/ui_mainwindow.h \
	src/ui_editperson.h \
	src/ui_aboutwindow.h

APP_OBJS=\
	main.o \
	util.o \
	editperson.o \
	viewtransactions.o \
	aboutwindow.o \
	sqlmodels.o \
	printing.o \
	resources.o \
	moc_main.o \
	runguard.o

LOGO_SVG ?= kampuscafe4.svg
LOGO_IMG ?= CafeKampus_logo_FINAL_RGB.png
ICON_PNGS = icon-64.png icon-48.png icon-32.png icon-16.png

APP_RESOURCES += $(addprefix $(APP_IMG),logo.png $(ICON_PNGS)) COPYING.html

# And target lists
TARGETS = $(APP_BIN)
NOBUILD_TARGETS +=
NOINST_TARGETS += 
CLEAN_TARGETS += icon.ico src/moc_*.cpp src/ui_*.h
DISTCLEAN_TARGETS += 


# Version
APP_VERSION := $(shell cat VERSION)
comma:= ,
APP_VERSION_COM := $(subst .,$(comma),$(APP_VERSION))
CXXFLAGS += -DAPP_VERSION=\"$(APP_VERSION)\"


ifneq ($(V),1)
COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CC $<" && $(CC) $(CFLAGS) -c -o $@ $<
COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo " CXX $<" && $(CXX) $(CXXFLAGS) -c -o $@ $<
LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CC) -o $@ $(filter %.o %.a,$+)
LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo " LINK $@" && $(CXX) -o $@ $(filter %.o %.a,$+)
LINK_STATIC_LIB = @echo " AR $@" && $(AR) cru $@ $(filter %.o,$+) && $(RANLIB) $@
else
COMPILE_C_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CC) $(CFLAGS) -c -o $@ $<" && $(CC) $(CFLAGS) -c -o $@ $<
COMPILE_CXX_OBJ = @if test ! -d $(OBJPATH); then $(MKDIR_P) $(OBJPATH); fi && echo "$(CXX) $(CXXFLAGS) -c -o $@ $<" && $(CXX) $(CXXFLAGS) -c -o $@ $<
LINK_C_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CC) -o $@ $(filter %.o %.a,$+)" && $(CC) -o $@ $(filter %.o %.a,$+)
LINK_CXX_BIN = @if test ! -d $(BINPATH); then $(MKDIR_P) $(BINPATH); fi && echo "$(CXX) -o $@ $(filter %.o %.a,$+)" && $(CXX) -o $@ $(filter %.o %.a,$+)
LINK_STATIC_LIB = @echo "$(AR) cru $@ $(filter %.o,$+)" && $(AR) cru $@ $(filter %.o,$+) && echo "$(RANLIB) $@" && $(RANLIB) $@
endif


###
### Target rules
###
all: $(NOBUILD_TARGETS) $(NOINST_TARGETS) $(TARGETS)


moc_predefs.h:
	@echo "" > $(OBJPATH)dummy.cpp
	@$(CXX) $(CXXFLAGS) -dM -E -o $@ $(OBJPATH)dummy.cpp

moc_%.cpp: %.h $(QT_MOC_RULES)
	@echo " Qt::MOC $@ $<"
	@$(QT_MOC) $(DEFINES) $(QT_MOC_FLAGS) $(INCPATH) $< -o $@

ui_%.h: %.ui
	@echo " Qt::UIC $@ $<"
	@$(QT_UIC) $(QT_UIC_FLAGS) $< -o $@


$(OBJPATH)%.o: src/%.cpp src/%.h
	$(COMPILE_CXX_OBJ) $(DEFINES) $(INCPATH)

$(OBJPATH)%.o: src/%.cpp
	$(COMPILE_CXX_OBJ) $(DEFINES) $(INCPATH)



###
### Windows specific rules
###
%.rc: %.rc.in icon.ico VERSION
	@sed -e "s/@APP_VERSION@/$(APP_VERSION)/g;s/@APP_VERSION_COM@/$(APP_VERSION_COM)/g;s#@APP_EXE@#$(notdir $(APP_BIN))#g" < $< > $@

$(OBJPATH)%.o: src/%.rc
	@echo " WINDRES $<"
	@$(WINDRES) $< -O coff -o $@


###
### Application rules
###
#$(APP_IMG)icon-%.png: $(addprefix $(APP_IMG),$(LOGO_SVG))
#	inkscape --export-area-page -w $(patsubst $(APP_IMG)icon-%.png,%,$@) -h $(patsubst $(APP_IMG)icon-%.png,%,$@) -e "$@" "$<"

#$(APP_IMG)logo.png: $(addprefix $(APP_IMG),$(LOGO_SVG))
#	inkscape --export-area-page -w 258 -h 220 -e "$@" "$<"

$(APP_IMG)icon-%.png: $(addprefix $(APP_IMG),$(LOGO_IMG))
	convert "$<" -scale "$(patsubst $(APP_IMG)icon-%.png,%,$@)x$(patsubst $(APP_IMG)icon-%.png,%,$@)" "$@"

$(APP_IMG)logo.png: $(addprefix $(APP_IMG),$(LOGO_IMG))
	convert "$<" -scale "258x220" "$@"

icon.ico: $(addprefix $(APP_IMG),$(ICON_PNGS))
	@echo " CONVERT $+ -> $@"
	@convert $+ $@

src/%.cpp: src/%.qrc $(APP_RESOURCES)
	@echo " Qt:RCC $@ $<"
	@$(QT_RCC) -name "Syntilista" $< -o $@

$(OBJPATH)main.o: src/main.cpp $(APP_HDRS) VERSION
	$(COMPILE_CXX_OBJ) $(DEFINES) $(INCPATH)


$(APP_BIN): $(addprefix $(OBJPATH),$(APP_OBJS)) $(APP_DEP_LIBS) | $(APP_DEPS)
	$(LINK_CXX_BIN) $(APP_LIBS)


###
### Special targets
###
clean:
	-$(RM) $(TARGETS) $(NOINST_TARGETS) $(CLEAN_TARGETS) $(OBJPATH)*.o

distclean: clean
	-$(RM) $(DISTCLEAN_TARGETS) *~ core *.core

.PHONY: clean distclean all