mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 20:13:32 +01:00
331 lines
11 KiB
Makefile
331 lines
11 KiB
Makefile
# (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)}')
|
|
|
|
BINARY_VERSION = $(shell echo $(PROJECT)_$(VERSION) | tr [a-z] [A-Z] | sed 's/-[^-]*$$//')
|
|
FTP_PCKG_DIR = /pub/packages
|
|
JANNET_PROJ_DIR = rsync_ssh://ftp.jannet.de:/home/ftp/dat$(FTP_PCKG_DIR)
|
|
CONFDIR = $(MODDIR)/../conf
|
|
|
|
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)
|
|
|
|
FULL_NAME = $(shell grep "^`id -nu`": /etc/passwd | cut -d: -f5)
|
|
SRC_SUFFIX = $(sort $(suffix $(wildcard $(TOPDIR)/hdr/*)))
|
|
SRC_FILES = Makefile $(wildcard $(addprefix *,$(SRC_SUFFIX)))
|
|
SRC_HEADERED = $(shell if [ "$(SRC_FILES)" ]; then grep -ic "it services" $(SRC_FILES) | sed '/:0$$/ d; s/:.*$$//'; fi)
|
|
SRC_UNHEADERED = $(filter-out $(SRC_HEADERED),$(SRC_FILES))
|
|
CFILES = $(wildcard *.c)
|
|
CPPFILES = $(wildcard *.cc *.cpp)
|
|
SFILES = $(wildcard *.S)
|
|
UIFILES = $(wildcard *.ui)
|
|
RCCFILES = $(wildcard *.qrc)
|
|
CALLSRC = $(CFILES) $(CPPFILES)
|
|
OBJ = $(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(CALLSRC))))
|
|
OBJ += $(patsubst %.S,%.o,$(SFILES))
|
|
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
|
|
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)
|
|
|
|
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)/,$(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 += $(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.*)
|
|
|
|
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
|
|
endif
|
|
|
|
INCLUDE += -I$(QT_PREFIX)/include
|
|
|
|
LD_LIB_PATH += $(QT_PREFIX)/lib
|
|
|
|
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
|
|
LPPFLAGS += -L$(QT_PREFIX)/lib -lqt-mt
|
|
else
|
|
ifneq ($(QT_VERSION),4)
|
|
LPPFLAGS += -L$(QT_PREFIX)/lib -lqt
|
|
else
|
|
LPPFLAGS += -L$(QT_PREFIX)/lib -lQtSql -lQtNetwork -lQtOpenGL -lQtDesigner_debug -lQtGui_debug -lQtCore_debug
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
ifeq ($(USE_X),true)
|
|
LDFLAGS += -L/usr/X11/lib -lXext -lX11
|
|
endif
|
|
|
|
ifeq ($(GCC_MAJOR),2)
|
|
LPPFLAGS += -lstdc++ -lm
|
|
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_VALGRIND),true)
|
|
PROJECT_CFLAGS += -include /usr/include/valgrind/memcheck.h
|
|
PROJECT_CPPFLAGS += -include /usr/include/valgrind/memcheck.h
|
|
# PROJECT_LDFLAGS +=
|
|
endif
|
|
|
|
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 = $(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
|
|
|
|
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)
|
|
|
|
CFLAGS_DEBUG = -Wall -D_DEBUG_ -g3 $(MEMWATCH)
|
|
CPPFLAGS_DEBUG = $(CFLAGS_DEBUG)
|
|
LDFLAGS_DEBUG = -Wall -g3
|
|
|
|
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
|
|
|
|
ifeq ($(USE_STACK_PROTECTOR),true)
|
|
PROJECT_CFLAGS += -fstack-protector-all
|
|
# PROJECT_CFLAGS += -fstack-protector
|
|
endif
|
|
|
|
ifneq ($(wildcard $(TOPDIR)/make/local.mk),)
|
|
include $(TOPDIR)/make/local.mk
|
|
endif
|
|
|
|
ifneq ($(wildcard local.mk),)
|
|
include local.mk
|
|
endif
|
|
|