# (c) 2001 jannet it services # contact@jannet.de # $Id$ ifndef LIBNAME LIBNAME := $(PROJECT) endif WINVERSION = $(shell echo $(VERSION) | sed -e "s/\./_/g") LOCAL_VERSION = $(shell echo $(VERSION)) LOCAL_WINVERSION = $(shell echo $(VERSION) | sed -e "s/\./_/g") 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) PROJECT_STEM = $(PROJECT)-$(DIST_VERSION) CVS_ROOT_DIR = $(shell test -d CVS && pwd | sed -e "s%`cat CVS/Repository`%%; s%/$$%%") REV_SUBDIRS = $(shell echo $(SUBDIRS) | awk '{for (i=NF; i>=1; i--) printf ("%s ",$$i)}') FTP_PCKG_DIR = /pub/packages JANNET_PROJ_DIR = rsync_ssh://ftp.jannet.de:/home/ftp/dat$(FTP_PCKG_DIR) 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];}') YTOOLS_VERSION = @PACKAGE_VERSION@ YTOOLS_VERSION_STR = \"@PACKAGE_VERSION@\" #ifndef $(TOPDIR) # TOPDIR := $(MODDIR) #endif CPP = g++ EXE_SH = $(wildcard *.sh) MKFILES = $(wildcard *.mk) CFILES = $(wildcard *.c) CPPFILES = $(wildcard *.cc *.cpp) CALLSRC = $(CFILES) $(CPPFILES) OBJ = $(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(CALLSRC)))) SHOBJS = $(patsubst %.cpp,lib%.so,$(patsubst %.cc,lib%.so,$(patsubst %.c,lib%.so,$(CALLSRC)))) SHSCRIPTS = $(patsubst %.sh.tmpl,%.sh,$(wildcard *.sh.tmpl)) SCRIPTS = $(patsubst %.tmpl,%,$(wildcard *.tmpl)) LOCAL_HDR = $(patsubst %.h,$(TOPDIR)/include/%.h,$(wildcard *.h)) LOCAL_EXE_SH = $(patsubst %.sh,$(TOPDIR)/bin/%.sh,$(wildcard *.sh)) LOCAL_H = $(wildcard *.h) LOCAL_C = $(wildcard *.c) LOCAL_CPP = $(wildcard *.c *.cpp *.cc *.C) LOCAL_CSRC = $(LOCAL_H) $(LOCAL_C) $(LOCAL_CPP) 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 -I$(MODDIR)/include $(PROJECT_INCLUDE) $(LOCAL_INCLUDE) 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 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) 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) INSTALLED_LIB_SO = $(INSTALL_LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) 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)/,$(LOCAL_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 CFLAGS_DEBUG = -Wall -D_DEBUG_ -g3 $(MEMWATCH) CPPFLAGS_DEBUG = $(CFLAGS_DEBUG) CFLAGS += $(LOCAL_CFLAGS) $(PROJECT_CFLAGS) $(YLIB_CFLAGS) $(INCLUDE) CPPFLAGS += $(LOCAL_CPPFLAGS) $(PROJECT_CPPFLAGS) $(YLIB_CPPFLAGS) $(INCLUDE) LDFFTW = -lrfftw -lfftw -lm #LDAUDIO = -laudiofile ifeq ($(DEVELOPMENT),true) CFLAGS += $(CFLAGS_DEBUG) CPPFLAGS += $(CPPFLAGS_DEBUG) endif LIBDIR = $(TOPDIR)/lib INSTALLED_SHOBJS = $(addprefix $(INSTALL_LIBDIR)/,$(SHOBJS)) ifeq ($(USE_QT),true) USE_X = true ifeq ($(QT_VERSION),3) QT_PREFIX = /usr/lib/qt3 else QT_PREFIX = /usr/lib/qt2 endif LD_LIB_PATH += $(QT_PREFIX)/lib MOC = $(QT_PREFIX)/bin/moc UIC = $(QT_PREFIX)/bin/uic MOC_CPP = $(patsubst %.h,moc_%.cpp,$(MOC_HEADER)) OBJ += $(patsubst %.cpp,%.o,$(MOC_CPP)) ifdef REENTRANT LPPFLAGS += -L$(QT_PREFIX)/lib -lqt-mt else LPPFLAGS += -L$(QT_PREFIX)/lib -lqt endif INCLUDE += -I$(QT_PREFIX)/include endif ifeq ($(USE_X),true) LDFLAGS += -L/usr/X11/lib -lXext -lX11 endif ifeq ($(GCC_MAJOR),2) LPPFLAGS += -lg++ -lstdc++ DEPEND_CPPFLAGS += -I/usr/include/g++ -I/usr/local/include 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 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_TIMER),true) CFLAGS += -D_USE_TIMER_ CPPFLAGS += -D_USE_TIMER_ endif LDFLAGS += -L$(LIBDIR) $(PROJECTLIB_LDFLAGS) $(LOCAL_LDFLAGS) $(PROJECT_LDFLAGS) $(LPPFLAGS) LDREST += $(LDAUDIO) $(LDFFTW) -ldl CC = $(YAMD)gcc CPP = $(YAMD)g++ RM = rm AR = ar ifeq ($(LOG_THREAD_NAMES), true) CFLAGS += -DSLOG_THREAD_NAMES CPPFLAGS += -DSLOG_THREAD_NAMES endif 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 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 define install_local_cfg $(INSTALL) -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@ endef LD_LIBRARY_PATH = $(LIBDIR) export LD_LIBRARY_PATH 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/ ifeq ($(USE_TRACING),true) PROJECT_CFLAGS += -D_DO_TRACE_ PROJECT_CPPFLAGS += -D_DO_TRACE_ endif ifeq ($(USE_COMPILER_DEBUG_OPTS),true) PROJECT_CFLAGS += -Wall -g3 PROJECT_CPPFLAGS += -Wall -g3 PROJECT_LDFLAGS += -Wall -g3 endif ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true) PROJECT_CFLAGS += -funroll-loops -O2 PROJECT_CPPFLAGS += -funroll-loops -O2 else ifneq ($(USE_COMPILER_DEBUG_OPTS),true) PROJECT_CFLAGS += -DNDEBUG PROJECT_CPPFLAGS += -DNDEBUG endif endif ifneq ($(wildcard local.mk),) include local.mk endif