#! gmake ## AbiSource Applications ## Copyright (C) 1998 AbiSource, Inc. ## ## This program is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License ## as published by the Free Software Foundation; either version 2 ## of the License, or (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. ABI_ROOT:=$(shell pwd)/../../.. include $(ABI_ROOT)/src/config/abi_defs_wp.mk include $(ABI_ROOT)/src/config/abi_rules.mk ################################################################## ## This makefile serves two purposes. It exposes an "install" ## target, wherein it installs AbiSuite applications. The ## eventual layout of these files is $(prefix)/AbiSuite, except ## for symbolic links in $(prefix/bin. /usr/local is a good value ## to use for $(prefix), and it is the default. ## ## If you're looking to build distribution packages, this Makefile ## also provides the "distribution" target, which depends on ## installation targets specific to the distribution layouts ## it will build. These targets might be named "install_redhat" ## or "install_debian"; they place the program components into places ## their respective distributions would expect to find them. These ## targets will be called by package tools like RPM. # The plain "install" common to all Unix targets install: @TARGET=$(prefix)/share/AbiSuite-2.0 BINDIR=$(prefix)/bin SRCDIR=$(OUTDIR) \ SCRIPTDIR=$(ABI_ROOT)/src/pkg/common/unix/scripts \ $(ABI_ROOT)/src/pkg/common/unix/scripts/install.sh ######################################################################## install_redhat: @strip $(OUTDIR)/bin/AbiWord-2.0 @TARGET=/usr/share/abisuite BINDIR=/usr/bin SRCDIR=$(OUTDIR) \ DOCDIR=/usr/doc LIBDIR=/usr/lib \ SCRIPTDIR=$(ABI_ROOT)/src/pkg/common/unix/scripts \ $(ABI_ROOT)/src/pkg/linux/scripts/install_redhat.sh ######################################################################## RPM_LOC = $(shell [ -x /usr/bin/rpm ] && echo 1 || [ -x /bin/rpm ] && echo 1) ALIEN_LOC = $(shell [ -x /usr/bin/alien ] && echo 1) # If tgz is inside $ABI_DIST_TARGET ifneq ($(findstring tgz,$(ABI_DIST_TARGET)),) DIST_DEPS += tgz endif # If tbz is inside $ABI_DIST_TARGET ifneq ($(findstring tbz,$(ABI_DIST_TARGET)),) DIST_DEPS += tbz endif # If rpm is inside $ABI_DIST_TARGET _and_ rpm is found locally ifneq ($(findstring rpm,$(ABI_DIST_TARGET)),) ifneq ($(RPM_LOC),) DIST_DEPS += rpm else bogus1: @echo "" @echo "Skipping RPM packaging: [/usr/bin/rpm] not found." @echo "" endif endif # If deb is inside $ABI_DIST_TARGET _and_ alien is found locally ifneq ($(findstring deb,$(ABI_DIST_TARGET)),) #ifneq ($(ALIEN_LOC),) DIST_DEPS += deb #else #bogus2: # @echo "" # @echo "Skipping DEB packaging: [/usr/bin/alien] not found." # @echo "" #endif endif # If slp is inside $ABI_DIST_TARGET _and_ alien is found locally ifneq ($(findstring slp,$(ABI_DIST_TARGET)),) ifneq ($(ALIEN_LOC),) DIST_DEPS += slp else bogus3: @echo "" @echo "Skipping SLP packaging: [/usr/bin/alien] not found." @echo "" endif endif # If rpm was NOT in the dist target list, but deb _or_ slp was, # we wipe the RPM so it will not conflict with the RPM generated # by another machine (which was explicitly told to create one). ifeq ($(findstring rpm,$(ABI_DIST_TARGET)),) ifneq ($(findstring slp,$(ABI_DIST_TARGET)),) WIPE_RPM=1 endif endif ######################################################################## # This target builds a huge tarball of EVERY component from CVS needed # to build the AbiSuite tree. #DEBIAN_ROOT is the root of all work being done for debian build #DEB_ROOT is the root of all work being done for just the deb archive DEBIAN_ROOT:=$(ABI_ROOT)/dist/abisuite-$(ABI_BUILD_VERSION) DEB_ROOT:=$(ABI_ROOT)/dist/abisuite-$(ABI_BUILD_VERSION)/debian/tmp PACK_ROOT:=$(ABI_ROOT)/../abiword-$(ABI_BUILD_VERSION) MODULE_LIST=abi expat unixfonts abidistfiles libpng zlib wv abiword-plugins abispell # The following only works for RPM3.x #RPM_SOURCE_DIR=$(strip $(shell grep "topdir:" /etc/rpmrc | sed "s/.*topdir://")) # This should work for RPM 3.x and RPM 4.x on stock redhat systems RPM_SOURCE_DIR=/usr/src/redhat # TODO : should this be specified outside the build process? ifndef $(ABI_RELEASE_NUMBER) ABI_RELEASE_NUMBER=1 endif pack_rpm: @rm -rf $(PACK_ROOT) @echo "Making source pack in directory [$(PACK_ROOT)]..." @mkdir -p $(PACK_ROOT) @(cd $(ABI_ROOT)/..; tar --exclude=CVS -cf - $(MODULE_LIST)) | \ (cd $(PACK_ROOT); tar xf -) # @rm -f $(RPM_SOURCE_DIR)/SOURCES/abiword-$(ABI_BUILD_VERSION).tar.gz @(cd $(PACK_ROOT)/..; tar zcf $(RPM_SOURCE_DIR)/SOURCES/abiword-$(ABI_BUILD_VERSION).tar.gz \ abiword-$(ABI_BUILD_VERSION)) @rm -rf $(PACK_ROOT) ######################################################################## # These targets actually do all the heavy lifting of packaging. RPM_ARCH=$(OS_ARCH) rpm: pack_rpm # A tarball is already sitting in /usr/src/redhat/SOURCES (or thereabouts) # so rip the spec template through some sed magic and run with it. @$(subst xxxx,$(DIST),$(VERIFY_DIRECTORY)) @echo "Exporting spec file to [$(RPM_SOURCE_DIR)/SPECS]..." @(sed -e 's/__ABI_BUILD_VERSION__/$(ABI_BUILD_VERSION)/' \ -e 's/__ABI_RELEASE_NUMBER__/$(ABI_RELEASE_NUMBER)/' \ -e 's/__UNIX_CAN_BUILD_STATIC__/$(UNIX_CAN_BUILD_STATIC)/' \ -e 's/__ABI_OPT_DEBUG__/$(ABI_OPT_DEBUG)/' \ -e 's/__ABI_OPT_GNOME__/$(ABI_OPT_GNOME)/' \ -e 's/__ABI_OPT_PERL__/$(ABI_OPT_PERL)/' \ -e 's/__ABI_OPT_LIBJPEG__/$(ABI_OPT_LIBJPEG)/' \ -e 's/__ABI_OPT_PEER_EXPAT__/$(ABI_OPT_PEER_EXPAT)/' \ -e 's/__ABI_OPT_OPTIMIZE__/$(ABI_OPT_OPTIMIZE)/' \ -e 's/__ABI_OPT_PSPELL__/$(ABI_OPT_PSPELL)/' \ -e 's/__ABI_OPT_XFT__/$(ABI_OPT_XFT)/' \ -e 's/__ABI_BUILD_PACKAGER__/$(ABI_BUILD_PACKAGER)/' \ -e 's/__ABI_PLUGINS_TOOLS__/$(ABI_PLUGINS_TOOLS)/' \ -e 's/__ABI_PLUGINS_IMPEXP__/$(ABI_PLUGINS_IMPEXP)/' \ rpm/abiword.spec-template > $(RPM_SOURCE_DIR)/SPECS/abiword-$(ABI_BUILD_VERSION).spec) @echo "Producing RPM..." rpm -ba $(RPM_SOURCE_DIR)/SPECS/abiword-$(ABI_BUILD_VERSION).spec mv $(RPM_SOURCE_DIR)/RPMS/$(RPM_ARCH)/abiword-*$(ABI_BUILD_VERSION)-$(ABI_RELEASE_NUMBER).$(RPM_ARCH).rpm $(DIST) mv $(RPM_SOURCE_DIR)/SRPMS/abiword-$(ABI_BUILD_VERSION)-$(ABI_RELEASE_NUMBER).src.rpm $(DIST) deb:: @echo "Producing Deb..." @rm -rf $(DEBIAN_ROOT) @echo "Building Tree in directory [$(DEBIAN_ROOT)]..." #sources are put in /usr/bin because /usr/X11R6/bin is reserved for #programs that are a part of the X distribution. FHS-compliance @install -m 755 -d $(DEB_ROOT)/DEBIAN @install -m 755 -d $(DEB_ROOT)/usr/bin @install -m 755 -d $(DEB_ROOT)/usr/share/doc/abiword/examples @install -m 755 -d $(DEB_ROOT)/usr/share/abisuite/fonts @install -m 755 -d $(DEB_ROOT)/usr/share/abisuite/dictionary @install -m 755 -d $(DEB_ROOT)/usr/share/abisuite/icons @install -m 755 -d $(DEB_ROOT)/usr/share/abisuite/AbiWord/strings @install -m 755 -d $(DEB_ROOT)/usr/share/abisuite/AbiWord/help @install -m 755 -d $(DEB_ROOT)/usr/lib/menu @install -m 755 -d $(DEB_ROOT)/usr/share/man/man1 @chmod -R 755 $(DEB_ROOT)/. #install binaries @install -s -m 755 $(OUTDIR)/bin/*_d $(DEB_ROOT)/usr/bin/. @install -m 755 deb/AbiWord $(DEB_ROOT)/usr/bin/. @ln -s AbiWord $(DEB_ROOT)/usr/bin/abiword #install the documentation @install -m 644 deb/AbiWord-2.0.1 $(DEB_ROOT)/usr/share/man/man1/. @ln -s AbiWord-2.0.1.gz $(DEB_ROOT)/usr/share/man/man1/AbiWord.1.gz @ln -s AbiWord-2.0.1.gz $(DEB_ROOT)/usr/share/man/man1/abiword.1.gz @install -m 644 deb/copyright $(DEB_ROOT)/usr/share/doc/abiword/. @install -m 644 deb/changelog $(DEB_ROOT)/usr/share/doc/abiword/changelog.Debian @install -m 644 $(OUTDIR)/AbiSuite/readme.txt $(DEB_ROOT)/usr/share/doc/abiword/README @gzip -9 $(DEB_ROOT)/usr/share/doc/abiword/README @gzip -9 $(DEB_ROOT)/usr/share/doc/abiword/changelog.Debian @gzip -9 $(DEB_ROOT)/usr/share/man/man1/AbiWord-2.0.1 #install the share stuff @cp -R $(OUTDIR)/AbiSuite/icons/* $(DEB_ROOT)/usr/share/abisuite/icons/. @cp -R $(OUTDIR)/AbiSuite/fonts/* $(DEB_ROOT)/usr/share/abisuite/fonts/. @cp -R $(OUTDIR)/AbiSuite/AbiWord/strings/* $(DEB_ROOT)/usr/share/abisuite/AbiWord/strings/. @cp -R $(OUTDIR)/AbiSuite/AbiWord/help/* $(DEB_ROOT)/usr/share/abisuite/AbiWord/help/. @ln -s ../../../lib/ispell/default.hash $(DEB_ROOT)/usr/share/abisuite/dictionary/american.hash #other debian stuff @install -m 644 deb/menu $(DEB_ROOT)/usr/lib/menu/abiword @cp deb/control $(DEBIAN_ROOT)/debian/. @cp deb/postinst $(DEB_ROOT)/DEBIAN/. @cp deb/postrm $(DEB_ROOT)/DEBIAN/. @cp deb/prerm $(DEB_ROOT)/DEBIAN/. @cp deb/changelog $(DEBIAN_ROOT)/debian/. (cd $(DEBIAN_ROOT);dpkg-shlibdeps $(DEB_ROOT)/usr/bin/*_d) (cd $(DEBIAN_ROOT);dpkg-gencontrol -v$(ABI_BUILD_VERSION) -isp) (fakeroot $(ABI_ROOT)/src/pkg/linux/scripts/install_debian.sh $(DEB_ROOT) $(ABI_ROOT)/dist/abisuite-$(ABI_BUILD_VERSION)) @mv $(DEBIAN_ROOT)/*.deb $(ABI_ROOT)/dist/ # We're using alien to convert from RPM to DEB package deb_old: rpm @echo "Producing DEB..." @$(subst xxxx,$(DIST),$(VERIFY_DIRECTORY)) (cd $(DIST); alien --to-deb -c -k abisuite-$(ABI_BUILD_VERSION)-$(ABI_RELEASE_NUMBER).$(OS_ARCH).rpm) # We're using alien to convert from RPM to SLP package slp: rpm @echo "Producing SLP..." @$(subst xxxx,$(DIST),$(VERIFY_DIRECTORY)) (cd $(DIST); alien --to-slp -c -k abisuite-$(ABI_BUILD_VERSION)-$(ABI_RELEASE_NUMBER).$(OS_ARCH).rpm) # tgz target is provided by a common Unix makefile include $(ABI_ROOT)/src/pkg/common/unix/tgz.mk # tbz target is provided by a common Unix makefile include $(ABI_ROOT)/src/pkg/common/unix/tbz.mk # This target should build all packages distribution: $(DIST_DEPS) echo $(DIST_DEPS) ifeq ($(WIPE_RPM),1) @rm $(DIST)/abisuite-$(ABI_BUILD_VERSION)-$(ABI_RELEASE_NUMBER).$(OS_ARCH).rpm endif