jw-pkg/make/defs.mk

361 lines
13 KiB
Makefile
Raw Normal View History

2002-07-19 19:48:27 +00:00
# (c) 2001 jannet it services
# contact@jannet.de
# $Id$
ifndef LIBNAME
LIBNAME := $(PROJECT)
endif
2002-07-19 19:48:27 +00:00
2002-07-20 10:26:53 +00:00
WINVERSION = $(shell echo $(VERSION) | sed -e "s/\./_/g")
LOCAL_VERSION = $(shell echo $(VERSION))
LOCAL_WINVERSION = $(shell echo $(VERSION) | sed -e "s/\./_/g")
2002-07-19 19:48:27 +00:00
DIST_VERSION = $(shell echo $(VERSION) | sed -e "s/-dev//")
DIST_WINVERSION = $(shell echo $(WINVERSION) | sed -e "s/-dev//")
LOCAL_DIST_VERSION = $(shell echo $(LOCAL_VERSION) | sed -e "s/-dev//")
LOCAL_DIST_WINVERSION = $(shell echo $(LOCAL_WINVERSION) | sed -e "s/-dev//")
#DEVELOPMENT = $(shell echo $(VERSION) | grep 'dev' >/dev/null && echo true)
2002-07-19 19:48:27 +00:00
PROJECT_STEM = $(PROJECT)-$(DIST_VERSION)
2002-07-29 14:11:58 +00:00
CVS_ROOT_DIR = $(shell test -d CVS && pwd | sed -e "s%`cat CVS/Repository`%%; s%/$$%%")
2002-09-10 09:56:11 +00:00
REV_SUBDIRS = $(shell echo $(SUBDIRS) | awk '{for (i=NF; i>=1; i--) printf ("%s ",$$i)}')
FRESH_CVSDIR = $(HOME)/local/src/cvs.fresh
2002-07-19 19:48:27 +00:00
PROJECT_CAPNAME = $(shell echo $(PROJECT) | tr [a-z] [A-Z])
BINARY_VERSION = $(shell echo $(PROJECT)_$(VERSION) | tr [a-z] [A-Z] | sed 's/-[^-]*$$//')
2005-05-16 15:04:02 +00:00
FTP_PCKG_DIR = /pub/packages
JANNET_PROJ_DIR = rsync_ssh://ftp.jannet.de:/home/ftp/dat$(FTP_PCKG_DIR)
CONFDIR = $(MODDIR)/../conf
2002-07-19 19:48:27 +00:00
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];}')
GCC_REV = $(shell gcc -v 2>&1 | grep version | awk '{ split($$3,a,"."); print a[3];}')
2002-07-19 19:48:27 +00:00
LD_VERSION = $(shell ld --version | sed '/GNU ld/ !d; s/[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/')
LD_MAJOR = $(shell echo $(LD_VERSION) | cut -d. -f1)
LD_MINOR = $(shell echo $(LD_VERSION) | cut -d. -f2)
LD_REV = $(shell echo $(LD_VERSION) | cut -d. -f3)
YTOOLS_VERSION = @PACKAGE_VERSION@
YTOOLS_VERSION_STR = \"@PACKAGE_VERSION@\"
2002-07-19 19:48:27 +00:00
#ifndef $(TOPDIR)
# TOPDIR := $(MODDIR)
2002-07-19 19:48:27 +00:00
#endif
CPP = g++
EXE_SH += $(wildcard *.sh *.pl)
MKFILES += $(wildcard *.mk)
FULL_NAME = $(shell grep "^`id -nu`": /etc/passwd | cut -d: -f5)
SRC_SUFFIX += $(sort $(suffix $(wildcard $(TOPDIR)/hdr/*)))
LOCAL_SRC += Makefile $(wildcard $(addprefix *,$(SRC_SUFFIX)))
SRC_HEADERED += $(shell if [ "$(LOCAL_SRC)" ]; then grep -ic "it services" $(LOCAL_SRC) | sed '/:0$$/ d; s/:.*$$//'; fi)
SRC_UNHEADERED += $(filter-out $(SRC_HEADERED),$(LOCAL_SRC))
LOCAL_C += $(wildcard *.c)
LOCAL_CPP += $(wildcard *.cc *.cpp *.C)
LOCAL_H += $(wildcard *.h *.H)
SFILES += $(wildcard *.S)
UIFILES += $(wildcard *.ui)
RCCFILES += $(wildcard *.qrc)
SRC_ALL_CPP += $(LOCAL_C) $(LOCAL_CPP) $(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))
OBJ += $(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cpp %.cc, $(SRC_ALL_CPP)))))
OBJ += $(patsubst %.S,%.o,$(SFILES))
SHOBJS += $(patsubst %.cpp,lib%.so,$(patsubst %.cc,lib%.so,$(patsubst %.c,lib%.so,$(SRC_ALL_CPP))))
SHSCRIPTS += $(patsubst %.sh.tmpl,%.sh,$(wildcard *.sh.tmpl))
SCRIPTS += $(patsubst %.tmpl,%,$(wildcard *.tmpl))
BUILD_EXE_SH += $(patsubst %.sh,$(BUILD_BINDIR)/%.sh,$(EXE_SH))
BUILD_H += $(patsubst %.h,$(TOPDIR)/include/%.h,$(SRC_H))
PREREQ_DIR += $(addprefix $(MODDIR)/,$(LOCAL_PREREQ))
PREREQ_DONE += $(addsuffix /all.done,$(PREREQ_DIR))
PREREQ_H += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.h))
PREREQ_C += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.c))
PREREQ_CPP += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.c)) \
$(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.cpp))
PREREQ_CSRC += $(PREREQ_H) $(PREREQ_C) $(PREREQ_CPP)
CONTRIB_MOD += $(addprefix contrib/,$(CONTRIB_LIBS))
REQUIRED := $(CONTRIB_MOD) $(REQUIRED)
REQUIRED_DIR += $(patsubst %,$(MODDIR)/%,$(REQUIRED))
REQUIRED_DONE += $(patsubst %,%/all.done,$(REQUIRED_DIR))
REQUIRED_H += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.h))
REQUIRED_C += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.c))
REQUIRED_CPP += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.cpp)) \
$(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.cpp))
REQUIRED_CSRC += $(REQUIRED_H) $(REQUIRED_C) $(REQUIRED_CPP)
ALL_H += $(LOCAL_H) $(PREREQ_H)
ALL_C += $(LOCAL_C) $(PREREQ_CPP)
ALL_CPP += $(LOCAL_CPP) $(PREREQ_CPP)
ALL_CSRC += $(LOCAL_CSRC) $(PREREQ_CSRC)
TEXTCLEAN += $(wildcard *~ .*~ .*.swp *.rep)
INCLUDE += -I. -I$(TOPDIR)/include $(PROJECT_INCLUDE) $(LOCAL_INCLUDE)
ifneq ($(TOPDIR),$(MODDIR))
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
BUILD_BINDIR = $(TOPDIR)/bin
LIBDIR = $(TOPDIR)/lib
INSTALL_DOCDIR_DIST = $(DOC_PREFIX)
INSTALL_DOCDIR_DEVEL = $(DOC_PREFIX)-devel
DOCS += $(wildcard README CHANGES TODO LICENSE AUTHORS CREDITS *.pdf *.txt *.html)
DOCSUBDIRS += $(wildcard html tex info examples src)
2002-07-19 19:48:27 +00:00
INSTALLED_VERSION_FILE = $(PREFIX)/VERSION
INSTALLED_DOCS_DIST = $(addprefix $(INSTALL_DOCDIR_DIST)/,$(DOCS))
INSTALLED_DOCS_DEVEL = $(addprefix $(INSTALL_DOCDIR_DEVEL)/,$(DOCS))
SO_SUFFIX = so.$(shell echo $(VERSION) | cut -d- -f1)
LIB_A = $(LIBDIR)/lib$(LIBNAME).a
LIB_SO = $(LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX)
VERSION_SCRIPT = $(LIBDIR)/version.ldscript
INSTALLED_LIB_SO = $(INSTALL_LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX)
INSTALLED_SHOBJS += $(addprefix $(INSTALL_LIBDIR)/,$(SHOBJS))
INSTALLED_LINKS_SO += $(shell echo $(INSTALLED_LIB_SO) | sed -e "s/\.so\..*$$/.so/" | grep -v $(INSTALLED_LIB_SO))
LINKS_SO += $(shell echo $(LIB_SO) | sed -e "s/\.so\..*$$/.so/" | grep -v $(LIB_SO))
INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a
INSTALLED_EXE += $(INSTALL_BINDIR)/$(EXE)
INSTALLED_EXE_SH += $(addprefix $(INSTALL_BINDIR)/,$(EXE_SH))
INSTALLED_EXE_BIN += $(addprefix $(INSTALL_BINDIR)/,$(EXE_BIN))
INSTALLED_MKFILES += $(addprefix $(INSTALL_MKDIR)/,$(MKFILES))
INSTALLED_H += $(addprefix $(INSTALL_HDRDIR)/,$(SRC_H))
2002-07-19 19:48:27 +00:00
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_
endif
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.*)
2002-07-19 19:48:27 +00:00
ifeq ($(USE_QT),true)
USE_X = true
2002-07-19 19:48:27 +00:00
2005-04-20 11:03:06 +00:00
ifeq ($(QT_VERSION),2)
QT_PREFIX = /usr/lib/qt2
2005-04-20 11:03:06 +00:00
else
ifeq ($(QT_VERSION),3)
QT_PREFIX = /usr/lib/qt3
2005-04-20 11:03:06 +00:00
else
ifeq ($(QT_VERSION),4)
QT_PREFIX = $(HOME)/opt/qt4
2005-04-20 11:03:06 +00:00
INCLUDE += -I$(QT_PREFIX)/include/Qt
endif
endif
2004-01-31 21:24:50 +00:00
endif
INCLUDE += -I$(QT_PREFIX)/include
2005-04-20 11:03:06 +00:00
LD_LIB_PATH += $(QT_PREFIX)/lib
MOC = $(QT_PREFIX)/bin/moc
UIC = $(QT_PREFIX)/bin/uic
RCC = $(QT_PREFIX)/bin/rcc
2002-07-19 19:48:27 +00:00
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))
2005-05-02 04:19:51 +00:00
ifeq ($(QT_VERSION),4)
UIC_H = $(patsubst %.ui,ui_%.h, $(UIFILES))
2005-05-02 04:19:51 +00:00
else
UIC_H = $(patsubst %.ui,%.h, $(UIFILES))
2005-05-02 04:19:51 +00:00
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))
2004-01-31 21:24:50 +00:00
ifdef REENTRANT
ifneq ($(QT_VERSION),4)
LPPFLAGS += -L$(QT_PREFIX)/lib -lqt-mt
else
LPPFLAGS += -L$(QT_PREFIX)/lib -lQtSql -lQtNetwork -lQtOpenGL -lQtDesigner_debug -lQtGui_debug -lQtCore_debug
endif
2004-01-31 21:24:50 +00:00
else
2005-04-20 11:03:06 +00:00
ifneq ($(QT_VERSION),4)
LPPFLAGS += -L$(QT_PREFIX)/lib -lqt
2005-04-20 11:03:06 +00:00
else
LPPFLAGS += -L$(QT_PREFIX)/lib -lQtSql -lQtNetwork -lQtOpenGL -lQtDesigner_debug -lQtGui_debug -lQtCore_debug
2005-04-20 11:03:06 +00:00
endif
2002-07-19 19:48:27 +00:00
endif
2005-04-20 11:03:06 +00:00
endif
2002-07-19 19:48:27 +00:00
ifeq ($(USE_X),true)
LDFLAGS += -L/usr/X11/lib -lXext -lX11
2002-07-19 19:48:27 +00:00
endif
ifeq ($(GCC_MAJOR),2)
LPPFLAGS += -lstdc++ -lm
CFLAGS += -I/usr/local/include
CPPFLAGS += -I/usr/local/include
DEPEND_CPPFLAGS += -I/usr/include/g++ -I/usr/local/include
2002-07-19 19:48:27 +00:00
else
LPPFLAGS += -L/usr/local/gcc3.3/lib -lstdc++ -lgcc_s
DEPEND_CPPFLAGS += -I/usr/local/gcc3.3/include/c++/3.3 -I/usr/local/gcc3.3/include/c++/3.3/i686-pc-linux-gnu -I/usr/local/include
2002-07-19 19:48:27 +00:00
endif
ifeq ($(LIBTYPE),shared)
LDFLAGS += -rdynamic
2002-07-19 19:48:27 +00:00
endif
ifeq ($(USE_PROJECT_LIB),true)
PROJECTLIB_LDFLAGS += -l$(LIBNAME)
2002-07-19 19:48:27 +00:00
endif
ifeq ($(USE_PROFILER),true)
CFLAGS += -fprofile-arcs -ftest-coverage
CPPFLAGS += -fprofile-arcs -ftest-coverage
LDFLAGS += -fprofile-arcs -ftest-coverage
2002-07-19 19:48:27 +00:00
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 +=
endif
2002-07-19 19:48:27 +00:00
ifeq ($(USE_TIMER),true)
CFLAGS += -D_USE_TIMER_
CPPFLAGS += -D_USE_TIMER_
2002-07-19 19:48:27 +00:00
endif
LDFLAGS += -L$(LIBDIR) $(LOCAL_LDFLAGS) $(PROJECTLIB_LDFLAGS) $(PROJECT_LDFLAGS) $(LPPFLAGS)
LDREST += $(LDAUDIO) $(LDFFTW) -ldl
CC = $(YAMD)gcc
CPP = $(YAMD)g++
RM = rm
AR = ar
2002-07-19 19:48:27 +00:00
2004-02-03 05:00:14 +00:00
ifeq ($(LOG_THREAD_NAMES), true)
CFLAGS += -DSLOG_THREAD_NAMES
CPPFLAGS += -DSLOG_THREAD_NAMES
2004-02-03 05:00:14 +00:00
endif
2002-07-19 19:48:27 +00:00
ifneq ($(wildcard $(MODDIR)/devutil/scripts),)
MOD_SCRIPT_DIR = $(MODDIR)/devutil/scripts
else
MOD_SCRIPT_DIR = $(MODDIR)/bin
endif
ifdef INSTALL_LOG
INSTALL=$(MOD_SCRIPT_DIR)/log_install.sh -l $(INSTALL_LOG)
LINK_LIB=$(MOD_SCRIPT_DIR)/log_install.sh -L -l $(INSTALL_LOG)
else
ifndef INSTALL
INSTALL = install
2002-07-19 19:48:27 +00:00
endif
ifndef LINK_LIB
LINK_LIB=$(MOD_SCRIPT_DIR)/log_install.sh -L
endif
endif
define make_subdirs
set -e; for D in $(SUBDIRS) ; do make -C $$D ; done
endef
define make_subdirs_target
set -e; for D in $(SUBDIRS) ; do make -C $$D $@; done
endef
2002-07-25 20:27:58 +00:00
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/
2002-07-19 19:48:27 +00:00
ifeq ($(USE_TRACING),true)
PROJECT_CFLAGS += -D_DO_TRACE_
PROJECT_CPPFLAGS += -D_DO_TRACE_
endif
ifeq ($(USE_COMPILER_DEBUG_OPTS),true)
CFLAGS_DEBUG += -Wall -D_DEBUG_ -g3 $(MEMWATCH)
CPPFLAGS_DEBUG += $(CFLAGS_DEBUG)
LDFLAGS_DEBUG +=
PROJECT_CFLAGS += $(CFLAGS_DEBUG)
PROJECT_CPPFLAGS += $(CFLAGS_DEBUG)
PROJECT_LDFLAGS += $(LDFLAGS_DEBUG)
else
PROJECT_CFLAGS += -DNDEBUG
PROJECT_CPPFLAGS += -DNDEBUG
endif
ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true)
PROJECT_CFLAGS += -funroll-loops -O3
PROJECT_CPPFLAGS += -funroll-loops -O3
endif
2004-02-11 12:24:25 +00:00
ifeq ($(USE_STACK_PROTECTOR),true)
PROJECT_CFLAGS += -fstack-protector-all
# PROJECT_CFLAGS += -fstack-protector
endif
2005-09-07 14:52:25 +00:00
ifeq ($(USE_EFENCE),true)
LDFLAGS += -lefence
2005-09-07 14:52:25 +00:00
endif
ifneq ($(wildcard $(TOPDIR)/make/local.mk),)
include $(TOPDIR)/make/local.mk
endif
2004-02-11 12:24:25 +00:00
ifneq ($(wildcard local.mk),)
include local.mk
endif