diff --git a/make/defs-orig.mk b/make/defs-orig.mk index 510b1430..fd8a2a11 100644 --- a/make/defs-orig.mk +++ b/make/defs-orig.mk @@ -5,7 +5,9 @@ ifndef PROJECT PROJECT := ytools - REQUIRED = make \ +endif + REQUIRED = inst/pre \ + make \ doc \ debug misc slog platform \ devutil \ @@ -19,8 +21,8 @@ ifndef PROJECT YMisc YError \ YThread YMutex YEvent YCbContr contr/Y2WayMap \ YTimeB YStopWatch YStopWatchList YStopWatchQueue YStopWatchThreadList \ - lib include bin -endif + lib include bin \ + inst/post LIBNAME := $(PROJECT) @@ -108,6 +110,7 @@ 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) @@ -126,7 +129,11 @@ 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 @@ -171,6 +178,10 @@ else LPPFLAGS += -lstdc++ -L/usr/local/lib endif +ifeq ($(LIBTYPE),shared) +LDFLAGS += -rdynamic +endif + ifeq ($(USE_PROJECT_LIB),true) PROJECTLIB_LDFLAGS = -l$(LIBNAME) endif @@ -194,7 +205,7 @@ RM = rm AR = ar ifneq ($(wildcard $(MODDIR)/devutil/scripts),) -MOD_SCRIPT_DIR = $(MODDIR)/bin +MOD_SCRIPT_DIR = $(MODDIR)/devutil/scripts else MOD_SCRIPT_DIR = $(MODDIR)/bin endif diff --git a/make/exe.mk b/make/exe.mk index b70ef413..e430352a 100644 --- a/make/exe.mk +++ b/make/exe.mk @@ -3,8 +3,8 @@ # contact@jannet.de # $Id$ -EXE = $(ALL) include $(MODDIR)/make/defs.mk include $(MODDIR)/make/rules.mk clean: execlean localclean -install: $(ALL) $(INSTALLED_EXE) +all: $(EXE) $(EXE_BIN) +install: $(INSTALLED_EXE) $(INSTALLED_EXE_BIN) diff --git a/make/lib.mk b/make/lib.mk index 6b9e4f84..4dd611cd 100644 --- a/make/lib.mk +++ b/make/lib.mk @@ -5,5 +5,9 @@ include $(MODDIR)/make/defs.mk include $(MODDIR)/make/rules.mk -clean: objclean localclean doneclean -install: $(LOCAL_TARGETS) $(ALL) + +all: $(LIB_SO) $(LINKS_SO) +clean: + rm -rf *.a *.o *.so.* *.so *~ .*.swp +distclean: clean +install: $(LOCAL_TARGETS) $(ALL) $(INSTALLED_LIB_A) $(INSTALLED_LIB_SO) $(INSTALLED_LINKS_SO) diff --git a/make/rpmdist.mk b/make/rpmdist.mk index 340ad415..39933e3d 100644 --- a/make/rpmdist.mk +++ b/make/rpmdist.mk @@ -1,15 +1,21 @@ UPLOAD_SH = $(MODDIR)/devutil/scripts/upload.sh +ifeq ($(RPM_PROJECT),) +RPM_PROJECT = $(PROJECT) +endif + +RPM_VERSION := $(shell cat VERSION | sed -e s'/-dev//') + CLEAN += $(wildcard *.spec *.rpm *~ *.rpmrc *.dist .*.swp) -DIST_SRC_DIR = dist/src/$(PROJECT)-$(DIST_VERSION) +DIST_SRC_DIR = dist/src/$(RPM_PROJECT)-$(RPM_VERSION) DIST_PCKG_DIR = dist/pckg -PCKG_TAR = $(PROJECT)-$(DIST_VERSION).tar.gz -PCKG_RPM_RUN_I386 = $(PROJECT)-run-$(DIST_VERSION).i386.rpm -PCKG_RPM_DEVEL_I386 = $(PROJECT)-devel-$(DIST_VERSION).i386.rpm -PCKG_RPM_SRC = $(PROJECT)-$(DIST_VERSION).src.rpm +PCKG_TAR = $(RPM_PROJECT)-$(RPM_VERSION).tar.gz +PCKG_RPM_RUN_I386 = $(RPM_PROJECT)-run-$(RPM_VERSION).i386.rpm +PCKG_RPM_DEVEL_I386 = $(RPM_PROJECT)-devel-$(RPM_VERSION).i386.rpm +PCKG_RPM_SRC = $(RPM_PROJECT)-$(RPM_VERSION).src.rpm -PCKG_ROOT = $(FTP_PCKG_DIR)/$(PROJECT) +PCKG_ROOT = $(FTP_PCKG_DIR)/$(RPM_PROJECT) CURRENT_SRC = $(PCKG_ROOT)/src/$(PCKG_TAR) CURRENT_RPM_RUN_I386 = $(PCKG_ROOT)/rpm/run/$(PCKG_RPM_RUN_I386) CURRENT_RPM_DEVEL_I386 = $(PCKG_ROOT)/rpm/devel/$(PCKG_RPM_DEVEL_I386) @@ -60,8 +66,8 @@ cpmod.dist: cpfiles.dist: mkdir -p $(DIST_SRC_DIR) cp Makefile $(DIST_SRC_DIR) - sh $(MKSPEC_SH) -V $(DIST_VERSION) -S $(notdir $(PCKG_TAR)) -N $(PROJECT) > $(DIST_SRC_DIR)/$(PROJECT)-$(DIST_VERSION).spec - echo $(DIST_VERSION) > $(DIST_SRC_DIR)/VERSION + sh $(MKSPEC_SH) -V $(RPM_VERSION) -S $(notdir $(PCKG_TAR)) -N $(RPM_PROJECT) > $(DIST_SRC_DIR)/$(RPM_PROJECT)-$(RPM_VERSION).spec + echo $(RPM_VERSION) > $(DIST_SRC_DIR)/VERSION touch $@ %.tar.gz: cpfiles.dist cpmod.dist diff --git a/make/rules.mk b/make/rules.mk index fe7cec16..4848ac90 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -35,7 +35,7 @@ endif $(CC) $< $(LDFLAGS) -o $@ $(LIB_SO): $(LIB_A) - $(CC) -shared -Wl,--whole-archive $< -Wl,--no-whole-archive $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ + $(CC) -shared -Wl,--whole-archive,-soname=$(notdir $@) $< -Wl,--no-whole-archive $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ $(TOPDIR)/include: mkdir -p $@ @@ -57,25 +57,29 @@ timers_%.h: %.h $(GENERATE_FUNC_TIMERS) ifeq ($(USE_PROJECT_LIB),true) ifeq ($(LIBTYPE),shared) -$(EXE): $(OBJ) $(LIB_SO) +$(EXE) $(EXE_BIN): $(OBJ) $(LIB_SO) else -$(EXE): $(OBJ) $(LIB_A) +$(EXE) $(EXE_BIN): $(OBJ) $(LIB_A) endif else -$(EXE): $(OBJ) +$(EXE) $(EXE_BIN): $(OBJ) endif $(CC) $(OBJ) $(LDFLAGS) -o $@ + mkdir -p $(BUILD_BINDIR) + install -m 755 $@ $(BUILD_BINDIR) $(LIBS): make -C $(LIBDIR) all $(INSTALL_HDRDIR) $(INSTALL_BINDIR) $(INSTALL_LIBDIR) $(INSTALL_MKDIR): - $(INSTALL) -d -g $(EXEGROUP) -o $(EXEOWNER) -m $(EXEMODE) $@ + $(INSTALL) -d -g $(MAKEGROUP) -o $(MAKEOWNER) -m 755 $@ $(INSTALLED_LIB_SO) $(INSTALLED_LIB_A): libdir.done -libdir.done: - mkdir -p $(INSTALL_LIBDIR) +libdir.done: $(INSTALL_LIBDIR) + touch $@ + +hdrdir.done: $(INSTALL_HDRDIR) touch $@ $(LINKS_SO): @@ -93,6 +97,8 @@ $(INSTALLED_EXE): $(EXE) endif $(INSTALL_BINDIR)/%.sh: %.sh $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ +$(INSTALL_BINDIR)/%.bin: %.bin + $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ $(INSTALL_LIBDIR)/%.so: %.so $(INSTALL) -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ @@ -111,6 +117,18 @@ $(INSTALL_DOCDIR_DIST)/% $(INSTALL_DOCDIR_DEVEL)/%: % mkdir -p $(dir $@) $(INSTALL) -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ +$(INSTALLED_PROFILE_PATH_SCRIPT): + echo "if [ -z $$PATH ]; then PATH=$(shell echo $(INSTALL_BINDIR) | sed -e s%$(ENV_PREFIX)%%)" > path_script.sh + echo "else PATH=$$PATH:$(shell echo $(INSTALL_BINDIR) | sed -e s%$(ENV_PREFIX)%%); fi" >> path_script.sh + mkdir -p $(dir $@) + $(INSTALL) -o $(MAKEOWNER) -g $(MAKEGROUP) -m $(MAKEMODE) path_script.sh $@ + +ifeq ($(DEVELOPMENT),true) +install_profile_path: +else +install_profile_path: $(INSTALLED_PROFILE_PATH_SCRIPT) +endif + checkroot: @if [ "$(CHECK_ROOT)" = true -o "$(CHECK_ROOT)" = TRUE ] ; then \ echo "Error: You can only do this if either" ;\ @@ -145,6 +163,7 @@ doneclean: execlean: allclean objclean textclean distclean: clean objclean textclean tmpclean vcdistclean profclean timerclean + rm -rf $(DISTCLEAN) localclean: $(LOCAL_CLEAN) rm -rf $(CLEAN)