PACKAGE=r2l-package VERSION = 1.0.1 R2LLIB_CONFIG_LOCAL = bin/r2llib-config REFRESHD_LIB_CONFIG_LOCAL = bin/refreshd_cnt-config REFRESHD_LIB_CONFIG = $(REFRESHD_LIB_CONFIG_LOCAL) BIDITEXT_DIR = src/biditext PLUGINS_DIR = src/r2l-plugins R2LLIB_DIR = src/r2llib REFRESHD_MAIN_DIR = src/refreshd REFRESHD_LIB_DIR = $(REFRESHD_MAIN_DIR)/src/refreshd_cnt REFRESHD_DIR = $(REFRESHD_MAIN_DIR)/src/refreshd REFRESHD_HOOK_DIR = $(REFRESHD_MAIN_DIR)/src/refreshd_hook REFRESHD_TESTS_DIR = $(REFRESHD_MAIN_DIR)/src/test PUBLISH_DIR=aluf:public_html/R2L/r2l-tarball # to allow overriding with 'gmake MAKE=gmake': SCP=scp GZIP = gzip TAR = tar LN = ln RM = rm -f MV = mv INSTALL = install # ######################### # # Will be overriden in make.defs MAKE = make BUILD_REFRESHD = 1 BUILD_PLUGINS = 1 R2LLIB_CONFIG = # include 'make.defs' if it exists -include make.defs LOCAL_AC_MACROS=aclocal/ac_path_generic.m4 aclocal/check_gnu_make.m4 # for the packaging: PACKAGE_FILES_LIST = README ChangeLog Makefile configure.in r2l.spec \ configure install-sh $(LOCAL_AC_MACROS) \ make.defs.in r2l.spec.in PACKAGES_DIR=.. R2LLIB_VERSION=0.38 BIDITEXT_VERSION=1.0.0 PLUGINS_VERSION=0.60 REFRESHD_VERSION=0.1.4 R2LLIB_TARBALL=$(PACKAGES_DIR)/r2llib-$(R2LLIB_VERSION).tar.gz BIDITEXT_TARBALL=$(PACKAGES_DIR)/biditext-$(BIDITEXT_VERSION).tar.gz PLUGINS_TARBALL=$(PACKAGES_DIR)/r2l-plugins-$(PLUGINS_VERSION).tar.gz REFRESHD_TARBALL=$(PACKAGES_DIR)/refreshd-$(REFRESHD_VERSION).tar.gz PACKAGES=$(R2LLIB_TARBALL) $(BIDITEXT_TARBALL) $(PLUGINS_TARBALL) \ $(REFRESHD_TARBALL) RPM_ARCH=i586 RPM_REVESION=5 RPM_PACKAGE_NAMES=r2l r2l-gnome RPMS_DIR=$(HOME)/RPM/RPMS/i586 RPM_PACKAGES=\ $(RPM_PACKAGE_NAMES:%=$(RPMS_DIR)/%-$(VERSION)-$(RPM_REVESION).$(RPM_ARCH).rpm) #TAR_BALL_DIR=$(PACKAGE)-$(VERSION) #TAR_BALL=$(TAR_BALL_DIR).tar.gz TAR_BALL_DIR=r2l-$(VERSION) TAR_BALL=$(PACKAGES_DIR)/$(PACKAGE)-$(VERSION).tar.gz # application files. ifeq ($(BUILD_REFRESHD),1) REFRESHD_TARGET = refreshd refreshd_hook else REFRESHD_TARGET = endif ifeq ($(BUILD_PLUGINS),1) PLUGINS_TARGET = plugins else PLUGINS_TARGET = endif ifeq ($(strip $(R2LLIB_CONFIG)),) R2LLIB_CONFIG=$(R2LLIB_CONFIG_LOCAL) R2LLIB_INSTALL_PROGS = install_r2llib_progs R2LLIB_UNINSTALL_PROGS = uninstall_r2llib_progs else R2LLIB_INSTALL_PROGS = R2LLIB_UNINSTALL_PROGS = endif all: biditext $(PLUGINS_TARGET) $(REFRESHD_TARGET) # this builds and installs a local copy of r2llib $(R2LLIB_CONFIG_LOCAL): $(R2LLIB_DIR)/Makefile topdir=$$PWD; \ cd $(R2LLIB_DIR); \ $(MAKE) PREFIX=$$topdir install # this builds and installs a local copy of refreshd_cnt $(REFRESHD_LIB_CONFIG_LOCAL): $(R2LLIB_CONFIG) $(REFRESHD_LIB_DIR)/Makefile topdir=$$PWD; \ cd $(REFRESHD_LIB_DIR); \ $(MAKE) PREFIX=$$topdir install biditext: $(R2LLIB_CONFIG) $(BIDITEXT_DIR)/Makefile topdir=$$PWD; \ cd $(BIDITEXT_DIR) ; \ $(MAKE) R2LLIB_CONFIG=$$topdir/$(R2LLIB_CONFIG) refreshd: $(R2LLIB_CONFIG) $(REFRESHD_LIB_CONFIG) $(REFRESHD_DIR)/Makefile topdir=$$PWD; \ cd $(REFRESHD_DIR) ; \ $(MAKE) R2LLIB_CONFIG=$$topdir/$(R2LLIB_CONFIG) \ REFRESHD_LIB_CONFIG=$$topdir/$(REFRESHD_LIB_CONFIG) refreshd_hook: $(R2LLIB_CONFIG) $(REFRESHD_LIB_CONFIG) \ $(REFRESHD_HOOK_DIR)/Makefile topdir=$$PWD; \ cd $(REFRESHD_HOOK_DIR) ; \ $(MAKE) R2LLIB_CONFIG=$$topdir/$(R2LLIB_CONFIG) \ REFRESHD_LIB_CONFIG=$$topdir/$(REFRESHD_LIB_CONFIG) refreshd_tests: $(R2LLIB_CONFIG) $(REFRESHD_LIB_CONFIG) \ $(REFRESHD_TESTS_DIR)/Makefile refreshd topdir=$$PWD; \ cd $(REFRESHD_TESTS_DIR) ; \ $(MAKE) R2LLIB_CONFIG=$$topdir/$(R2LLIB_CONFIG) \ REFRESHD_LIB_CONFIG=$$topdir/$(REFRESHD_LIB_CONFIG) refreshd_test_comm: plugins: $(R2LLIB_CONFIG) $(PLUGINS_DIR)/Makefile topdir=$$PWD; \ cd $(PLUGINS_DIR) ; \ $(MAKE) R2LLIB_CONFIG=$$topdir/$(R2LLIB_CONFIG) install: install_biditext install_plugins install_refreshd \ install_refreshd_hook $(R2LLIB_INSTALL_PROGS) install_biditext: biditext $(BIDITEXT_DIR)/Makefile cd $(BIDITEXT_DIR) ; \ $(MAKE) install install_plugins: plugins $(PLUGINS_DIR)/Makefile cd $(PLUGINS_DIR) ; \ $(MAKE) install install_refreshd: refreshd $(REFRESHD_DIR)/Makefile cd $(REFRESHD_DIR) ; \ $(MAKE) install install_refreshd_hook: refreshd_hook $(REFRESHD_HOOK_DIR)/Makefile cd $(REFRESHD_HOOK_DIR) ; \ $(MAKE) install install_refreshd_tests: refreshd_hook $(REFRESHD_TESTS_DIR)/Makefile cd $(REFRESHD_TESTS_DIR) ; \ $(MAKE) install install_r2llib_progs: $(R2LLIB_CONFIG_LOCAL) $(R2LLIB_DIR)/Makefile cd $(R2LLIB_DIR) ; \ $(MAKE) install_progs uninstall: uninstall_biditext uninstall_plugins uninstall_refreshd \ uninstall_refreshd_hook $(R2LLIB_UNINSTALL_PROGS) uninstall_biditext: $(BIDITEXT_DIR)/Makefile cd $(BIDITEXT_DIR) ; \ $(MAKE) uninstall uninstall_plugins: $(PLUGINS_DIR)/Makefile cd $(PLUGINS_DIR) ; \ $(MAKE) uninstall uninstall_refreshd: $(REFRESHD_DIR)/Makefile cd $(REFRESHD_DIR) ; \ $(MAKE) uninstall uninstall_refreshd_hook: $(REFRESHD_HOOK_DIR)/Makefile cd $(REFRESHD_HOOK_DIR) ; \ $(MAKE) uninstall uninstall_refreshd_tests: $(REFRESHD_HOOK_DIR)/Makefile cd $(REFRESHD_TESTS_DIR) ; \ $(MAKE) uninstall uninstall_r2llib_progs: $(R2LLIB_DIR)/Makefile cd $(R2LLIB_DIR) ; \ $(MAKE) uninstall_progs clean: clean_biditext clean_r2llib clean_plugins clean_refreshd_lib \ clean_refreshd clean_refreshd_hook clean_package clean_package: $(RM) r2l.spec clean_r2llib: $(R2LLIB_DIR)/Makefile topdir=$$PWD; \ cd $(R2LLIB_DIR); \ $(MAKE) PREFIX=$$topdir uninstall clean clean_refreshd_lib: $(REFRESHD_LIB_DIR)/Makefile topdir=$$PWD; \ cd $(REFRESHD_LIB_DIR); \ $(MAKE) PREFIX=$$topdir uninstall clean clean_biditext: $(BIDITEXT_DIR)/Makefile cd $(BIDITEXT_DIR) ; \ $(MAKE) clean clean_plugins: $(PLUGINS_DIR)/Makefile cd $(PLUGINS_DIR) ; \ $(MAKE) clean clean_refreshd: $(REFRESHD_DIR)/Makefile cd $(REFRESHD_DIR) ; \ $(MAKE) clean clean_refreshd_hook: $(REFRESHD_HOOK_DIR)/Makefile cd $(REFRESHD_HOOK_DIR) ; \ $(MAKE) clean clean_refreshd_tests: $(REFRESHD_TESTS_DIR)/Makefile cd $(REFRESHD_TESTS_DIR) ; \ $(MAKE) clean # 'unpack' and 'pack' are totally different. # 'pack' only unpacks this package. 'unpack' is for unpacking the other # packages, and prepare src/ test: refreshd_tests @echo "This target only built the tests. " @echo "See the programs that were created in $(REFRESHD_TESTS_DIR)" unpack: $(PACKAGES) # initilize 'src/' if [ -e src ] ; then \ $(RM) -rf src; \ fi $(INSTALL) -d src # unpack tarballs for tarball in $(PACKAGES); do \ $(GZIP) -d <$$tarball | $(TAR) -xvf - -C src ; \ done # remove the version numbers $(MV) $$PWD/$(R2LLIB_DIR)-$(R2LLIB_VERSION) $$PWD/$(R2LLIB_DIR) $(MV) $$PWD/$(BIDITEXT_DIR)-$(BIDITEXT_VERSION) $$PWD/$(BIDITEXT_DIR) $(MV) $$PWD/$(PLUGINS_DIR)-$(PLUGINS_VERSION) $$PWD/$(PLUGINS_DIR) $(MV) $$PWD/$(REFRESHD_MAIN_DIR)-$(REFRESHD_VERSION) \ $$PWD/$(REFRESHD_MAIN_DIR) TAR_BALL_ALL=$(PACKAGES_DIR)/r2l-$(VERSION).tar.gz TAR_BALL_ALL_DIR=$(PACKAGES_DIR)/r2l-$(VERSION) pack-all: $(TAR_BALL_ALL) $(TAR_BALL_ALL): $(TAR_BALL) $(PACKAGES) if [ -e $(TAR_BALL_ALL_DIR) ]; then \ $(RM) -rf $(TAR_BALL_ALL_DIR); \ fi $(GZIP) -d <$(TAR_BALL) |$(TAR) -xf - -C $(PACKAGES_DIR) $(INSTALL) -d $(TAR_BALL_ALL_DIR)/src cd $(TAR_BALL_ALL_DIR); for tarball in $(PACKAGES); do \ $(GZIP) -d <$$tarball | $(TAR) -xf - -C src ; \ done # remove the version numbers $(MV) $(TAR_BALL_ALL_DIR)/$(R2LLIB_DIR)-$(R2LLIB_VERSION) \ $(TAR_BALL_ALL_DIR)/$(R2LLIB_DIR) $(MV) $(TAR_BALL_ALL_DIR)/$(BIDITEXT_DIR)-$(BIDITEXT_VERSION) \ $(TAR_BALL_ALL_DIR)/$(BIDITEXT_DIR) $(MV) $(TAR_BALL_ALL_DIR)/$(PLUGINS_DIR)-$(PLUGINS_VERSION) \ $(TAR_BALL_ALL_DIR)/$(PLUGINS_DIR) $(MV) $(TAR_BALL_ALL_DIR)/$(REFRESHD_MAIN_DIR)-$(REFRESHD_VERSION) \ $(TAR_BALL_ALL_DIR)/$(REFRESHD_MAIN_DIR) # pack the tarball: (note the use of TAR_BALL_DIR) $(TAR) cf - -C $(PACKAGES_DIR) $(TAR_BALL_DIR) |\ $(GZIP) >$(TAR_BALL_ALL) pack: $(TAR_BALL) # is $(?D) a standard feature? $(TAR_BALL): $(PACKAGE_FILES_LIST) if [ -e $(TAR_BALL_DIR) ] ; then \ $(RM) -rf $(TAR_BALL_DIR); \ fi mkdir $(TAR_BALL_DIR) # create subdirectories if necessary. $(?D) is the directory parts of # $(?) . TODO: remove "." and remove duplicates for dir in $(^D) ; do \ mkdir -p $(TAR_BALL_DIR)/$$dir; \ done # copy the files for file in $^; do \ cp $$file $(TAR_BALL_DIR)/$$file; \ done #cp $(PACKAGE_FILES_LIST) $(TAR_BALL_DIR) $(TAR) cvzf $(TAR_BALL) $(TAR_BALL_DIR) rpm: $(RPM_PACKAGES) $(RPM_PACKAGES): $(TAR_BALL_ALL) rpm -tb $(TAR_BALL_ALL) configure: configure.in $(LOCAL_AC_MACROS) autoconf make.defs: make.defs.in configure ./configure r2l.spec: r2l.spec.in cat $< |sed -e 's#PACKAGE_VERSION#$(VERSION)#g' \ > $@ publish: $(TAR_BALL_ALL) $(RPM_PACKAGES) README r2l.spec $(SCP) $^ $(PUBLISH_DIR)