defs.mk: Push a lot more definitions from project directory here, hope it doesn't break anything

This commit is contained in:
Jan Lindemann 2007-06-16 17:52:51 +00:00 committed by Jan Lindemann
commit 1a9f0299e8

View file

@ -2,6 +2,31 @@
# contact@jannet.de
# $Id$
# ----- standard variables
PROJECT ?= $(shell (cd $(TOPDIR); basename `pwd`))
PROJECT_DESCR ?= No description
CUSTOMER ?= No customer
VERSION ?= $(shell sed -e "s/-dev//" $(TOPDIR)/VERSION)
HEX_VERSION = $(shell echo $(VERSION) | \
sed 's/-dev//; s/pre[^\.]*//; s/[\.-]/ /g' | xargs printf "0x%02x%02x%02x%02x")
DEVELOPMENT ?= $(shell grep -q 'dev' $(TOPDIR)/VERSION && echo true)
USE_PROJECT_LIB ?= true
REENTRANT ?= true
export REENTRANT
ifeq ($(DEVELOPMENT),true)
include $(TOPDIR)/make/cfg_dev.mk
else
include $(TOPDIR)/make/cfg_dist.mk
endif
OPTS_PID_FILE ?= $(PIDDIR)/$(PROJECT).pid
CFLAGS += -DVERSION=$(HEX_VERSION)
CPPFLAGS += -DVERSION=$(HEX_VERSION)
LD_LIB_PATH += $(MODDIR)/lib
ifndef LIBNAME
LIBNAME := $(PROJECT)
endif
@ -23,11 +48,13 @@ FIND_SUBDIRS = $(filter-out . .. ./nomake ./CVS $(addprefix ./,$(IGNOR
PROJECT_CAPNAME = $(shell echo $(PROJECT) | tr [a-z] [A-Z])
BINARY_VERSION = $(shell echo $(PROJECT)_$(VERSION) | tr [a-z] [A-Z] | sed 's/-[^-]*$$//')
BINARY_VERSION = $(shell echo $(PROJECT)_$(VERSION) | tr [a-z] [A-Z] | sed 's/-[^-]*$$//; s/-/_/g')
FTP_PCKG_DIR = /pub/packages
JANNET_PROJ_DIR = rsync_ssh://ftp.jannet.de:/home/ftp/dat$(FTP_PCKG_DIR)
CONFDIR = $(MODDIR)/../conf
CC = gcc
GCC_VERSION = $(shell gcc -v 2>&1 | grep version | awk '{ print $$3;}')
GCC_MAJOR = $(shell gcc -v 2>&1 | grep version | awk '{ split($$3,a,"."); print a[1];}')
GCC_MINOR = $(shell gcc -v 2>&1 | grep version | awk '{ split($$3,a,"."); print a[2];}')
@ -55,13 +82,12 @@ SRC_HEADERED += $(shell if [ "$(LOCAL_SRC)" ]; then grep -ic "it servic
SRC_UNHEADERED += $(filter-out $(SRC_HEADERED),$(LOCAL_SRC))
LOCAL_C += $(wildcard *.c)
LOCAL_CPP += $(wildcard *.cc *.cpp *.C)
ifeq ($(IS_PLUGIN),)
LOCAL_H += $(wildcard *.h *.H)
endif
SFILES += $(wildcard *.S)
UIFILES += $(wildcard *.ui)
RCCFILES += $(wildcard *.qrc)
SRC_ALL_CPP += $(LOCAL_C) $(LOCAL_CPP) $(LOCAL_H)
# why both SRC_H <-> LOCAL_H?
SRC_H += $(filter %.h %.H, $(SRC_ALL_CPP))
SRC_C += $(filter %.c, $(SRC_ALL_CPP))
SRC_CPP += $(filter %.cc %.cpp %.C, $(SRC_ALL_CPP))
@ -103,25 +129,17 @@ TEXTCLEAN += $(wildcard *~ .*~ .*.swp *.rep)
INCLUDE += -I. -I$(TOPDIR)/include $(PROJECT_INCLUDE) $(LOCAL_INCLUDE)
UPLOAD_URL_RPM_BIN = rsync_ssh://ftp.jannet.de:/home/ftp/dat/pub/packages/rpm/bin/
UPLOAD_URL_RPM_SRC = rsync_ssh://ftp.jannet.de:/home/ftp/dat/pub/packages/rpm/src/
ifneq ($(TOPDIR),$(MODDIR))
INCLUDE += -I$(MODDIR)/include
INCLUDE += -I$(MODDIR)/include
endif
ifndef INSTALL_LIBDIR
INSTALL_LIBDIR = $(PREFIX)/lib
endif
ifndef INSTALL_HDRDIR
INSTALL_HDRDIR = $(PREFIX)/include
endif
ifndef INSTALL_MKDIR
INSTALL_MKDIR = $(PREFIX)/make
endif
ifndef INSTALL_BINDIR
INSTALL_BINDIR = $(PREFIX)/bin
endif
INSTALL_LIBDIR ?= $(PREFIX)/lib
INSTALL_HDRDIR ?= $(PREFIX)/include
INSTALL_MKDIR ?= $(PREFIX)/make
INSTALL_BINDIR ?= $(PREFIX)/bin
BUILD_BINDIR = $(TOPDIR)/bin
LIBDIR = $(TOPDIR)/lib
@ -154,98 +172,25 @@ INSTALLED_H += $(addprefix $(INSTALL_HDRDIR)/,$(SRC_H))
INSTALLED_PROFILE_PATH_SCRIPT = $(ENV_PREFIX)/etc/profile.d/path_$(PROJECT).sh
MEMBERS += $(LIB_A)($(OBJ))
#PREFIX = ../# CAUTION: This breaks the installation in the project
#MEMWATCH += -DMEMWATCH -DMW_STDIO
#YAMD = yamd-
#EFENCE += -lefence
#CFLAGS += -DNDEBUG -O2 -g $(INCLUDE) $(LOCAL_CFLAGS) #production
ifeq ($(DEVELOPMENT),true)
CFLAGS += -D_DEVELOPMENT_
CPPFLAGS += -D_DEVELOPMENT_
CFLAGS += -D_DEVELOPMENT_
CPPFLAGS += -D_DEVELOPMENT_
endif
CFLAGS += $(LOCAL_CFLAGS) $(PROJECT_CFLAGS) $(YLIB_CFLAGS) $(INCLUDE)
CFLAGS += $(LOCAL_CFLAGS) $(PROJECT_CFLAGS) $(YLIB_CFLAGS) $(INCLUDE)
CPPFLAGS += $(LOCAL_CPPFLAGS) $(PROJECT_CPPFLAGS) $(YLIB_CPPFLAGS) $(INCLUDE)
LDFFTW += -lrfftw -lfftw -lm
#LDAUDIO = -laudiofile
CORE += $(wildcard core core.* vgcore vgcore.*)
ifeq ($(USE_QT),true)
USE_X = true
ifeq ($(QT_VERSION),2)
QT_PREFIX = /usr/lib/qt2
else
ifeq ($(QT_VERSION),3)
QT_PREFIX = /usr/lib/qt3
else
ifeq ($(QT_VERSION),4)
QT_PREFIX = $(HOME)/opt/qt4
INCLUDE += -I$(QT_PREFIX)/include/Qt
endif
endif
include $(MODDIR)/make/qt-defs.mk
endif
INCLUDE += -I$(QT_PREFIX)/include
ifeq ($(ARCH),x86)
LD_LIB_PATH += $(QT_PREFIX)/lib
QT_LDFLAGS += -L$(QT_PREFIX)/lib
else
ifeq ($(QT_VERSION),4)
LD_LIB_PATH += $(QT_PREFIX)/lib
QT_LDFLAGS += -L$(QT_PREFIX)/lib
else
LD_LIB_PATH += $(QT_PREFIX)/lib64
QT_LDFLAGS += -L$(QT_PREFIX)/lib64
endif
endif
MOC = $(QT_PREFIX)/bin/moc
UIC = $(QT_PREFIX)/bin/uic
RCC = $(QT_PREFIX)/bin/rcc
ifneq ($(wildcard *.h),)
MOC_H_HC = $(shell grep -H Q_OBJECT $(wildcard *.h) | cut -d: -f1 | sort -u)
endif
MOC_H_UI = $(patsubst %.ui,%.h,$(UIFILES))
MOC_H = $(sort $(MOC_H_HC) $(MOC_H_UI))
MOC_CPP = $(patsubst %.h,moc_%.cpp, $(MOC_H))
RCC_CPP = $(patsubst %.qrc,rcc_%.cpp, $(RCCFILES))
ifeq ($(QT_VERSION),4)
UIC_H = $(patsubst %.ui,ui_%.h, $(UIFILES))
else
UIC_H = $(patsubst %.ui,%.h, $(UIFILES))
endif
UIC_CPP = $(patsubst %.ui,uic_%.cpp, $(UIFILES))
OBJ += $(patsubst %.cpp,%.o,$(MOC_CPP))
OBJ += $(patsubst %.cpp,%.o,$(UIC_CPP))
OBJ += $(patsubst %.cpp,%.o,$(RCC_CPP))
ifdef REENTRANT
ifneq ($(QT_VERSION),4)
LPPFLAGS += $(QT_LDFLAGS) -lqt-mt
else
# LPPFLAGS += $(QT_LDFLAGS) -lQtSql -lQtNetwork -lQtOpenGL -lQtDesigner_debug -lQtGui_debug -lQtCore_debug
LPPFLAGS += $(QT_LDFLAGS) -lQtSql -lQtNetwork -lQtOpenGL -lQtDesigner -lQtGui -lQtCore
endif
else
ifneq ($(QT_VERSION),4)
LPPFLAGS += $(QT_LDFLAGS) -lqt
else
# LPPFLAGS += $(QT_LDFLAGS) -lQtSql -lQtNetwork -lQtOpenGL -lQtDesigner_debug -lQtGui_debug -lQtCore_debug
LPPFLAGS += $(QT_LDFLAGS) -lQtSql -lQtNetwork -lQtOpenGL -lQtDesigner -lQtGui -lQtCore
endif
endif
endif
ifeq ($(USE_X),true)
ifeq ($(ARCH),x86)
LDFLAGS += -L/usr/X11/lib -lXext -lX11
LDFLAGS += -L/usr/X11/lib -lXext -lX11
else
LDFLAGS += -L/usr/X11/lib64 -lXext -lX11
LDFLAGS += -L/usr/X11/lib64 -lXext -lX11
endif
endif
@ -268,44 +213,15 @@ else
endif
ifeq ($(LIBTYPE),shared)
LDFLAGS += -rdynamic
endif
ifeq ($(USE_PROJECT_LIB),true)
PROJECTLIB_LDFLAGS += -l$(LIBNAME)
endif
ifeq ($(USE_PROFILER),true)
CFLAGS += -fprofile-arcs -ftest-coverage
CPPFLAGS += -fprofile-arcs -ftest-coverage
LDFLAGS += -fprofile-arcs -ftest-coverage
endif
ifeq ($(USE_MPATROL),true)
PROJECT_CFLAGS += -include /usr/include/mpatrol.h
#PROJECT_CPPFLAGS += -include /usr/include/mpatrol.h
PROJECT_LDFLAGS += -lmpatrolmt -lbfd -liberty
endif
ifeq ($(USE_VALGRIND),true)
PROJECT_CFLAGS += -include /usr/include/valgrind/memcheck.h
PROJECT_CPPFLAG += -include /usr/include/valgrind/memcheck.h
# PROJECT_LDFLAGS +=
LDFLAGS += -rdynamic
endif
# TODO: this shoud be only conditional, but breaks, because not all headers
# do a conditional include of timer headers, yet
GENERATE_FUNC_TIMERS = $(MODDIR)/YStopWatchThreadList/generate_func_timers.sh
ifeq ($(USE_TIMER),true)
CFLAGS += -D_USE_TIMER_
CPPFLAGS += -D_USE_TIMER_
endif
LDFLAGS += -L$(LIBDIR) $(LOCAL_LDFLAGS) $(PROJECTLIB_LDFLAGS) $(PROJECT_LDFLAGS) $(LPPFLAGS)
LDREST += $(LDAUDIO) $(LDFFTW) -ldl
CC = $(YAMD)gcc
CPP = sh $(firstword $(wildcard $(MODDIR)/contrib/gfilt/gfilt $(MODDIR)/bin/gfilt))
ifeq ($(strip $(CPP)),sh)
CPP = g++
endif
@ -313,14 +229,14 @@ RM = rm
AR = ar
ifeq ($(LOG_THREAD_NAMES), true)
CFLAGS += -DSLOG_THREAD_NAMES
CPPFLAGS += -DSLOG_THREAD_NAMES
CFLAGS += -DSLOG_THREAD_NAMES
CPPFLAGS += -DSLOG_THREAD_NAMES
endif
ifneq ($(wildcard $(MODDIR)/devutil/scripts),)
MOD_SCRIPT_DIR = $(MODDIR)/devutil/scripts
MOD_SCRIPT_DIR = $(MODDIR)/devutil/scripts
else
MOD_SCRIPT_DIR = $(MODDIR)/bin
MOD_SCRIPT_DIR = $(MODDIR)/bin
endif
ifdef INSTALL_LOG
@ -336,6 +252,8 @@ else
endif
# ----- function definitions
define make_subdirs
set -e; for D in $(SUBDIRS) ; do make -C $$D ; done
endef
@ -348,8 +266,11 @@ define install_local_cfg
$(INSTALL) -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@
endef
UPLOAD_URL_RPM_BIN=rsync_ssh://ftp.jannet.de:/home/ftp/dat/pub/packages/rpm/bin/
UPLOAD_URL_RPM_SRC=rsync_ssh://ftp.jannet.de:/home/ftp/dat/pub/packages/rpm/src/
# ----- local.mk
ifneq ($(wildcard $(MODDIR)/make/local.mk),)
include $(MODDIR)/make/local.mk
endif
ifneq ($(wildcard $(TOPDIR)/make/local.mk),)
include $(TOPDIR)/make/local.mk
@ -359,70 +280,105 @@ ifneq ($(wildcard local.mk),)
include local.mk
endif
# ----- standard features, switched on with USE_XXX = true
ifeq ($(USE_PROJECT_LIB),true)
PROJECTLIB_LDFLAGS += -l$(LIBNAME) -L$(MODDIR)/lib
LD_LIB_PATH += $(TOPDIR)/lib
endif
ifeq ($(USE_TIMER),true)
CFLAGS += -D_USE_TIMER_
CPPFLAGS += -D_USE_TIMER_
endif
LDFLAGS += -L$(LIBDIR) $(LOCAL_LDFLAGS) $(PROJECTLIB_LDFLAGS) $(PROJECT_LDFLAGS) $(LPPFLAGS)
ifeq ($(USE_PROFILER),true)
CFLAGS += -fprofile-arcs -ftest-coverage
CPPFLAGS += -fprofile-arcs -ftest-coverage
LDFLAGS += -fprofile-arcs -ftest-coverage
endif
ifeq ($(USE_YAMD),true)
CC = yamd-gcc
endif
ifeq ($(USE_MPATROL),true)
CFLAGS += -include /usr/include/mpatrol.h
#CPPFLAGS += -include /usr/include/mpatrol.h
LDFLAGS += -lmpatrolmt -lbfd -liberty
endif
ifeq ($(USE_VALGRIND),true)
CFLAGS += -include /usr/include/valgrind/memcheck.h
CPPFLAG += -include /usr/include/valgrind/memcheck.h
# LDFLAGS +=
endif
ifeq ($(USE_TRACING),true)
PROJECT_CFLAGS += -D_DO_TRACE_
PROJECT_CPPFLAGS += -D_DO_TRACE_
CFLAGS += -D_DO_TRACE_
CPPFLAGS += -D_DO_TRACE_
endif
ifeq ($(USE_STACK_PROTECTOR),true)
PROJECT_CFLAGS += -fstack-protector-all
# PROJECT_CFLAGS += -fstack-protector
CFLAGS += -fstack-protector-all
# CFLAGS += -fstack-protector
endif
ifeq ($(USE_DBMALLOC),true)
CONTRIB_LIBS += dbmalloc
PROJECT_CFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc
PROJECT_CPPFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc
PROJECT_LDFLAGS += -ldbmalloc
CFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc
CPPFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc
LDFLAGS += -ldbmalloc
endif
ifeq ($(USE_DMALLOC),true)
PROJECT_CFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT
PROJECT_CPPFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT
PROJECT_LDFLAGS += -ldmallocthcxx -ldmallocth
CFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT
CPPFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT
LDFLAGS += -ldmallocthcxx -ldmallocth
endif
ifeq ($(USE_MEMWATCH),true)
PROJECT_CFLAGS += -DMEMWATCH -DMW_STDIO
PROJECT_CPPFLAGS += -DMEMWATCH -DMW_STDIO
CFLAGS += -DMEMWATCH -DMW_STDIO
CPPFLAGS += -DMEMWATCH -DMW_STDIO
endif
ifeq ($(USE_EFENCE),true)
PROJECT_CFLAGS += -DEFENCE
PROJECT_CPPFLAGS += -DEFENCE
PROJECT_LDFLAGS += -lefence
CFLAGS += -DEFENCE
CPPFLAGS += -DEFENCE
LDFLAGS += -lefence
endif
ifeq ($(USE_TRACING),true)
PROJECT_CFLAGS += -D_DO_TRACE_
PROJECT_CPPFLAGS += -D_DO_TRACE_
CFLAGS += -D_DO_TRACE_
CPPFLAGS += -D_DO_TRACE_
endif
ifeq ($(USE_ASSERTIONS),false)
PROJECT_CFLAGS += -DNDEBUG
PROJECT_CPPFLAGS += -DNDEBUG
CFLAGS += -DNDEBUG
CPPFLAGS += -DNDEBUG
endif
ifeq ($(COMPILE_DEBUG_CODE),true)
PROJECT_CFLAGS += -D_DEBUG_
PROJECT_CPPFLAGS += -D_DEBUG_
CFLAGS += -D_DEBUG_
CPPFLAGS += -D_DEBUG_
endif
ifeq ($(USE_MPATROL),true)
PROJECT_CFLAGS += -include $(MODDIR)/include/mpatrol.h
# PROJECT_CPPFLAGS += -include $(MODDIR)/include/mpatrol.h
PROJECT_LDFLAGS += -lmpatrolmt -lbfd -liberty
CFLAGS += -include $(MODDIR)/include/mpatrol.h
CPPFLAGS += -include $(MODDIR)/include/mpatrol.h
LDFLAGS += -lmpatrolmt -lbfd -liberty
endif
ifeq ($(USE_COMPILER_DEBUG_OPTS),true)
PROJECT_CFLAGS += -Wall -g3
PROJECT_CPPFLAGS += -Wall -g3
PROJECT_LDFLAGS += -Wall -g3
CFLAGS += -Wall -g3
CPPFLAGS += -Wall -g3
LDFLAGS += -Wall -g3
endif
ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true)
PROJECT_CFLAGS += -funroll-loops -O2
PROJECT_CPPFLAGS += -funroll-loops -O2
CFLAGS += -funroll-loops -O2
CPPFLAGS += -funroll-loops -O2
endif
#export PROJECT PROJECT_CFLAGS PROJECT_CPPFLAGS PROJECT_LDFLAGS USE_TIMER