From 405f0aa49d1980f337c54a38353cebe97e65efb2 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sat, 8 Jun 2002 09:26:58 +0000 Subject: [PATCH] $(TOPDIR), make: Intermediate commit of revised build architecture --- Makefile | 42 +++++++++++++++++++++++++++++++++++--- make/cfg_dev.mk | 51 ++++++++++++++++++++++++++++++++++++++++++++++- make/cfg_dist.mk | 50 +++++++++++++++++++++++++++++++++++++++++++++- make/defs-orig.mk | 39 ++++++++++++++++++++++++++---------- make/dist.mk | 10 +++++++++- make/exe.mk | 2 +- make/rules.mk | 48 ++++++++++++++++++++++++++++++++------------ make/text.mk | 1 + 8 files changed, 212 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 299fc568..123fe25c 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,40 @@ MODDIR=. -CLEAN = include lib -SUBDIRS = $(shell find . -type d -maxdepth 1 | grep -ve "include\|CVS\|lib\|nomake" | grep /) -include $(MODDIR)/make/dirs.mk +SUBDIRS = $(shell find . -type d -maxdepth 1 | grep -ve "include\|CVS\|lib\|nomake\|dist\|old" | grep /) + +include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/rules.mk +include $(MODDIR)/make/libdist.mk + +TEMP_BUILD_DIR = $(shell find $(TEMP_DIR) -name Makefile -maxdepth 2 | tail -1 | xargs dirname) + +all: + $(make_subdirs_target) + make $(LIB_SO) +libstat: + $(make_subdirs) +clean distclean: + $(make_subdirs_target) +install: all $(INSTALL_LIBDIR) + make -C lib install +install-devel: install + make -C include install + +libshared: libstat $(LIB_SO) + +distclean: clean.dist + +rpm.untar-build: rpm.untar + make -C $(TEMP_BUILD_DIR) rpm.build + +rpm.untar: build.dist + rm -rf $(TEMP_DIR) + mkdir -p $(TEMP_DIR) + tar -xzf $(DIST_FILE) -C $(TEMP_DIR) + +rpm.build-devel: + sudo -u root "make install" +rpm.build-user: + sudo -u root "make install" + +rpm.build: rpm.build-devel rpm.build-user + diff --git a/make/cfg_dev.mk b/make/cfg_dev.mk index 8a4c5905..86ddb464 100644 --- a/make/cfg_dev.mk +++ b/make/cfg_dev.mk @@ -1 +1,50 @@ -USE_TIMER = true +# ytools library +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +#CONTRIBDIR = $(TOPDIR)/contrib +PREFIX = $(HOME)/dat/test/$(PROJECT)-$(shell cat $(TOPDIR)/VERSION) +VAR_PREFIX = $(PREFIX)/var +EXEGROUP = $(shell id -g) +EXEOWNER = $(shell whoami) +EXEMODE = 770 +CFGGROUP = $(shell id -g) +CFGOWNER = $(shell whoami) +CFGMODE = 660 +CTRLGROUP = $(shell id -g) +CTRLOWNER = $(shell whoami) +CTRLMODE = 770 +INITGROUP = $(shell id -g) +INITOWNER = $(shell whoami) +INITMODE = 770 +LIBGROUP = $(shell id -g) +LIBOWNER = $(shell whoami) +LIBMODE = 770 +HDRGROUP = $(shell id -g) +HDROWNER = $(shell whoami) +HDRMODE = 644 +INITDIR = $(HOME)/bin +PIDDIR = $(VAR_PREFIX)/run +DAEMON_RUN_DIR = $(HOME) +DAEMON_RUN_USER = $(shell whoami) +DAEMON_RUN_GROUP = $(shell id -g) +LOGNAME = $(shell whoami)-$(PROJECT) +DOWNLOADDIRS = root@cvs.jannet.de:/usr/local/httpd/htdocs/www.jannet.de_443/$(CUSTOMER)/projects/$(PROJECT) +CLIENT_INC_DIR = $(TOPDIR)/../shared/tools +CONFIG_DIR = $(PREFIX)/etc +CONFIG_FILE = $(CONFIG_DIR)/$(PROJECT).cfg +LIBTYPE = static + +# -- debugging options + +# for using the dbmalloc lib, before you will need to do: +# cd $(MODDIR)/contrib/dbmalloc; tar -xzf dbmalloc-ver.sion.tar.gz +COMPILE_DEBUG_CODE = true +#USE_DBMALLOC = true +#USE_MEMWATCH = true +#USE_EFENCE = true +USE_COMPILER_DEBUG_OPTS = true +#USE_COMPILER_OPTIMIZATION = true +USE_TRACING = true +USE_TIMER = true diff --git a/make/cfg_dist.mk b/make/cfg_dist.mk index 8a4c5905..e3d33fbc 100644 --- a/make/cfg_dist.mk +++ b/make/cfg_dist.mk @@ -1 +1,49 @@ -USE_TIMER = true +# ytools library +# (c) 2001 jannet it services +# contact@jannet.de +# $Id$ + +#CONTRIBDIR = $(TOPDIR)/contrib +PREFIX = /opt/$(PROJECT) +VAR_PREFIX = $(PREFIX)/var +EXEGROUP = root +EXEOWNER = root +EXEMODE = 755 +CFGGROUP = root +CFGOWNER = root +CFGMODE = 640 +CTRLGROUP = root +CTRLOWNER = root +CTRLMODE = 750 +INITGROUP = root +INITOWNER = root +INITMODE = 740 +LIBGROUP = root +LIBOWNER = root +LIBMODE = 755 +HDRGROUP = root +HDROWNER = root +HDRMODE = 644 +INITDIR = /etc/init.d +PIDDIR = $(VAR_PREFIX)/run +DAEMON_RUN_DIR = /opt/$(PROJECT) +DAEMON_RUN_USER = dsprun +DAEMON_RUN_GROUP = dsprun +LOGNAME = $(PROJECT) +DOWNLOADDIRS = root@cvs.jannet.de:/usr/local/httpd/htdocs/www.jannet.de_443/$(CUSTOMER)/projects/$(PROJECT) +CONFIG_DIR = $(PREFIX)/etc +CONFIG_FILE = $(CONFIG_DIR)/$(PROJECT).cfg +LIBTYPE = static + +# -- debugging options + +# for using the dbmalloc lib, before you will need to do: +# cd $(MODDIR)/contrib/dbmalloc; tar -xzf dbmalloc-ver.sion.tar.gz +#COMPILE_DEBUG_CODE = true +#USE_DBMALLOC = true +#USE_MEMWATCH = true +#USE_EFENCE = true +#USE_COMPILER_DEBUG_OPTS = true +#USE_COMPILER_OPTIMIZATION = true +#USE_TRACING = true +#USE_TIMER = true diff --git a/make/defs-orig.mk b/make/defs-orig.mk index 0c0a72a5..1dbd293f 100644 --- a/make/defs-orig.mk +++ b/make/defs-orig.mk @@ -3,14 +3,25 @@ # contact@jannet.de # $Id$ -# doesn't work :-( ifndef PROJECT - PROJECT := yannet - LIBNAME := yannet -else - LIBNAME := $(PROJECT) + PROJECT := ytools + REQUIRED = make misc slog platform \ + devutil \ + hash \ + hexdump \ + lbuffer \ + debug \ + cfgfile gtopts \ + lock sigsync shmem \ + usrv uclnt statecheck msgfmt \ + YMisc YError \ + YThread YMutex YCbContr \ + YTimeB YStopWatch YStopWatchList YStopWatchQueue YStopWatchThreadList \ + lib endif +LIBNAME := $(PROJECT) + ifndef TOPDIR TOPDIR := $(MODDIR) endif @@ -42,7 +53,8 @@ GCC_REV = $(shell gcc -v 2>&1 | grep version | awk '{ split($$3,a,"."); pri CPP = g++ -#LIBNAME = $(PROJECT) +EXE_SH = $(wildcard *.sh) + CFILES = $(wildcard *.c) CPPFILES = $(wildcard *.cc *.cpp) CALLSRC = $(CFILES) $(CPPFILES) @@ -85,13 +97,18 @@ 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_BINDIR = $(PREFIX)/bin +SO_SUFFIX = so.$(VERSION) LIB_A = $(LIBDIR)/lib$(LIBNAME).a -ifeq ($(LIBTYPE),shared) -LIB_SO = $(LIBDIR)/lib$(LIBNAME).so -INSTALLED_LIB_SO = $(INSTALL_LIBDIR)/lib$(LIBNAME).so -else -endif +LIB_SO = $(LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) +INSTALLED_LIB_SO = $(INSTALL_LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) +INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a + +INSTALLED_EXE = $(INSTALL_BINDIR)/$(EXE) +INSTALLED_EXE_SH = $(addprefix $(INSTALL_BINDIR)/,$(EXE_SH)) + MEMBERS = $(LIB_A)($(OBJ)) #PREFIX = ../# CAUTION: This breaks the installation in the project #MEMWATCH = -DMEMWATCH -DMW_STDIO diff --git a/make/dist.mk b/make/dist.mk index 96346769..08863513 100644 --- a/make/dist.mk +++ b/make/dist.mk @@ -17,6 +17,7 @@ DOWNLOAD_REFERRER_DIRS = $(addprefix $(UPLOAD_DOCUMENT_ROOT)/, \ # -- general, and less important DISTDIR = $(TOPDIR)/dist +DIST_FILE = $(DISTDIR)/$(PROJECT)-$(VERSION).tar.gz TMPHTML=$(DISTDIR)/html DOWNLOAD_URLDIR=$(DOWNLOAD_SERVER)/$(URL_RELATIVE_PATH) TARGET_DIR = $(UPLOAD_DOCUMENT_ROOT)/$(UPLOAD_VIRTUAL_SERVER_ROOT)/$(URL_RELATIVE_PATH) @@ -45,6 +46,10 @@ $(SSI_PREFIX)%.html: $(TMPHTML) $(SSI_DOWNLOAD_TMPL) s/_SIZE_/$$SIZE/g;\ " > $@ +remove_dist: + rm -rf $(DISTDIR) + +distclean: remove_dist $(DIST_FILE): distclean mkdir -p $(DISTDIR)/src/$(PROJECT) mkdir -p $(DISTDIR)/pckg @@ -54,7 +59,10 @@ $(DIST_FILE): distclean grep -ve 'CVS\|contrib/nomake\|tar.gz\|/dist/\|experimental' | \ xargs tar -cf - | tar -C $(DISTDIR)/src/$(PROJECT) -xf - echo $(DIST_VERSION) > $(DISTDIR)/src/$(PROJECT)/VERSION ;\ - for mod in $(REQUIRED) ; do make -C $(MODDIR)/$$mod clean; cp -r $(MODDIR)/$$mod $(DISTDIR)/src/$(PROJECT)/mod/ ; done ;\ + echo $(REQUIRED) | while read mod ;\ + do make -C $(MODDIR)/$$mod clean ;\ + cp -r $(MODDIR)/$$mod $(DISTDIR)/src/$(PROJECT)/mod/ ;\ + done ;\ cp $(MODDIR)/Makefile $(DISTDIR)/src/$(PROJECT)/mod/ ;\ tar -czv -C $(DISTDIR)/src/ -f $(DIST_FILE) $(PROJECT) diff --git a/make/exe.mk b/make/exe.mk index 2f82ed25..b70ef413 100644 --- a/make/exe.mk +++ b/make/exe.mk @@ -7,4 +7,4 @@ EXE = $(ALL) include $(MODDIR)/make/defs.mk include $(MODDIR)/make/rules.mk clean: execlean localclean -install: $(ALL) installexe +install: $(ALL) $(INSTALLED_EXE) diff --git a/make/rules.mk b/make/rules.mk index 98f1f136..2b3fd106 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -27,11 +27,14 @@ $(LIBDIR): moc_%.cpp: %.h $(MOC) -o $@ $< -ifeq ($(LIBTYPE),shared) -lib%.so: %.o $(LIB_SO) -else +#ifeq ($(LIBTYPE),shared) +#lib%.so: %.o $(LIB_SO) +#else +#lib%.so: %.o +#endif +# $(CC) $< $(LDFLAGS) -o $@ + lib%.so: %.o -endif $(CC) $< $(LDFLAGS) -o $@ $(LIB_SO): $(LIB_A) @@ -66,15 +69,30 @@ endif $(LIBS): make -C $(LIBDIR) all -$(INSTALL_LIBDIR)/%.so: %.so - $(INSTALL) $< $@ +$(INSTALL_HDRDIR) $(INSTALL_BINDIR) $(INSTALL_LIBDIR): + mkdir -p $@ -$(PREFIX)/bin/$(EXE): $(EXE) - $(INSTALL) $(EXE) $(PREFIX)/bin/ +$(INSTALLED_LIB_SO) $(INSTALLED_LIB_A): $(INSTALL_LIBDIR) -$(INSTALLED_LIB_SO): $(LIB_SO) +#$(INSTALL_BINDIR)/%.bin: %.bin +# $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ + +ifneq ($(EXE),) +$(INSTALLED_EXE): $(EXE) + $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ +endif +$(INSTALL_BINDIR)/%.sh: %.sh install -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ +$(INSTALL_LIBDIR)/%.so: %.so + install -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ +$(INSTALL_LIBDIR)/%.$(SO_SUFFIX): %.$(SO_SUFFIX) + install -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ + +$(INSTALL_HDRDIR)/%.h: %.h + install -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ + + checkroot: @if [ "$(CHECK_ROOT)" = true -o "$(CHECK_ROOT)" = TRUE ] ; then \ echo "Error: You can only do this if either" ;\ @@ -82,12 +100,11 @@ checkroot: echo " b) the Makefile variable CHECK_ROOT does not contain \"true\" as value." ;\ fi -installexe: all checkroot $(PREFIX)/bin/$(EXE) +installexe: all checkroot $(INSTALLED_EXE) -installso: all checkroot $(PREFIX)/lib $(INSTALLED_SHOBJS) +installso: all checkroot $(INSTALL_LIBDIR) $(INSTALLED_SHOBJS) -installsh: all checkroot $(PREFIX)/bin - $(INSTALL) $(SHSCRIPTS) $(PREFIX)/bin/ +installsh: all checkroot $(INSTALL_BINDIR) $(INSTALLED_EXE_SH) pckgclean: rm -rf *.zip *.tar.gz *.rpm *.deb @@ -128,3 +145,8 @@ profclean: timerclean: rm -f timers_*.h + +install_libdir: $(INSTALL_LIBDIR) +install_bindir: $(INSTALL_BINDIR) +install_hdrdir: $(INSTALL_HDRDIR) + diff --git a/make/text.mk b/make/text.mk index 75926a1f..c124f978 100644 --- a/make/text.mk +++ b/make/text.mk @@ -5,6 +5,7 @@ include $(MODDIR)/make/defs.mk include $(MODDIR)/make/rules.mk +distclean: textclean localclean clean: textclean localclean install: # nothing to be done all: # nothing to be done