# (c) 2001 jannet it services # contact@jannet.de # $Id$ ifndef PROJECT PROJECT := ytools endif REQUIRED = inst/pre \ make \ doc \ debug misc slog platform \ devutil \ hash \ hexdump \ lbuffer \ debug \ cfgfile gtopts \ lock sigsync shmem \ usrv uclnt statecheck msgfmt \ YMisc YError \ YThread YMutex YEvent YCbContr contr/Y2WayMap \ YTimeB YStopWatch YStopWatchList YStopWatchQueue YStopWatchThreadList \ lib include bin \ inst/post ifndef LIBNAME LIBNAME := $(PROJECT) endif ifndef TOPDIR TOPDIR := $(MODDIR) endif VERSION = $(shell cat $(TOPDIR)/VERSION) WINVERSION = $(shell cat $(TOPDIR)/VERSION | sed -e "s/\./_/g") LOCAL_VERSION = $(shell cat $(TOPDIR)/VERSION) LOCAL_WINVERSION = $(shell cat $(TOPDIR)/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 cat $(TOPDIR)/VERSION | grep 'dev' >/dev/null && echo true) PROJECT_STEM = $(PROJECT)-$(DIST_VERSION) FTP_PCKG_DIR = /pub/packages JANNET_PROJ_DIR = rsync_ssh://ftp.jannet.de:/usr/local/ftp$(FTP_PCKG_DIR) ifeq ($(DEVELOPMENT),true) include $(TOPDIR)/make/cfg_dev.mk else include $(TOPDIR)/make/cfg_dist.mk endif 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];}') #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,%.o,$(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) INSTALL_LIBDIR = $(PREFIX)/lib INSTALL_HDRDIR = $(PREFIX)/include INSTALL_MKDIR = $(PREFIX)/make INSTALL_BINDIR = $(PREFIX)/bin 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 += $(INCLUDE) $(PROJECT_CFLAGS) $(LOCAL_CFLAGS) $(YLIB_CFLAGS) CPPFLAGS += $(INCLUDE) $(PROJECT_CPPFLAGS) $(LOCAL_CPPFLAGS) $(YLIB_CPPFLAGS) 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 MOC = /usr/lib/qt2/bin/moc UIC = /usr/lib/qt2/bin/uic MOC_CPP = $(patsubst %.h,moc_%.cpp,$(MOC_HEADER)) OBJ += $(patsubst %.cpp,%.o,$(MOC_CPP)) LPPFLAGS += -L/usr/lib/qt2/lib -lqt INCLUDE += -I/usr/lib/qt2/include endif ifeq ($(USE_X),true) LDFLAGS += -L/usr/X11/lib -lXext -lX11 endif ifeq ($(GCC_MAJOR),2) LPPFLAGS += -lg++ -lstdc++ else LPPFLAGS += -lstdc++ -L/usr/local/lib 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_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 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 LD_LIBRARY_PATH = $(LIBDIR) export LD_LIBRARY_PATH UPLOAD_URL_RPM_BIN=rsync_ssh://ftp.jannet.de:/usr/local/ftp/pub/packages/rpm/bin/ UPLOAD_URL_RPM_SRC=rsync_ssh://ftp.jannet.de:/usr/local/ftp/pub/packages/rpm/src/