#   @configure_input@
#
#   Main GNUmakefile for the GNUstep GNUmakefile Package.
#
#   Copyright (C) 1997-2006 Free Software Foundation, Inc.
#
#   Author: Scott Christley <scottc@net-community.com>
#   Author: Nicola Pero <n.pero@mi.flashnet.it>
#
#   This file is part of the GNUstep Makefile Package.
#
#   This library 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.
#   
#   You should have received a copy of the GNU General Public
#   License along with this library; see the file COPYING.LIB.
#   If not, write to the Free Software Foundation,
#   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

#
# I've thought about using the Makefile package files
# to install the GNUmakefile package, a cool little recursion,
# but there is nothing to made, and the files get installed
# in a special directory, so it was simpler this way.
#
include config-noarch.make
include config.make


# To install everything inside a temporary directory (say as part of
# building a binary package - deb or rpm), use something like `make
# install DESTDIR=/var/tmp/gnustep-make'
DESTDIR = 

# 'special_prefix' is an old alias for DESTDIR.
ifneq ($(special_prefix),)
  $(warning "WARNING: special_prefix is deprecated.  Please use DESTDIR instead")
  DESTDIR = $(special_prefix)
endif

override GNUSTEP_CONFIG_FILE = $(DESTDIR)@GNUSTEP_CONFIG_FILE@
override GNUSTEP_CONFIG_FILE_DIR = $(dir $(GNUSTEP_CONFIG_FILE))
tooldir = $(DESTDIR)@GNUSTEP_SYSTEM_TOOLS@
makedir = $(DESTDIR)@GNUSTEP_MAKEFILES@
srcdir = @srcdir@
VPATH = @srcdir@

override GNUSTEP_IS_FLATTENED = @GNUSTEP_IS_FLATTENED@
override GNUSTEP_TARGET_CPU = @clean_target_cpu@
override GNUSTEP_TARGET_VENDOR = @clean_target_vendor@
override GNUSTEP_TARGET_OS = @clean_target_os@

override GNUSTEP_LIB_COMBO = @ac_cv_library_combo@

ifeq ($(GNUSTEP_IS_FLATTENED), no)
  override GNUSTEP_TARGET_DIR = $(GNUSTEP_TARGET_CPU)/$(GNUSTEP_TARGET_OS)
  override GNUSTEP_TARGET_LDIR = $(GNUSTEP_TARGET_DIR)/$(GNUSTEP_LIB_COMBO)
  override MAYBE_LIBRARY_COMBO = $(GNUSTEP_LIB_COMBO)
else
  override GNUSTEP_TARGET_DIR = .
  override GNUSTEP_TARGET_LDIR = .
  override MAYBE_LIBRARY_COMBO = .
endif

export GNUSTEP_TARGET_DIR
export GNUSTEP_TARGET_LDIR
export MAYBE_LIBRARY_COMBO

INSTALL		= @INSTALL@
INSTALL_PROGRAM	= @INSTALL_PROGRAM@
INSTALL_DATA	= @INSTALL_DATA@

VERTAG = $(subst .,_,$(GNUSTEP_MAKE_VERSION))

SVNPREFIX=svn+ssh://svn.gna.org/svn/gnustep/tools/make

MAKE_FILES = aggregate.make application.make bundle.make service.make \
	common.make empty.make filesystem.make library-combo.make java.make jni.make library.make \
	messages.make rules.make target.make names.make resource-set.make \
	tool.make ctool.make test-library.make \
	objc.make test-application.make test-tool.make subproject.make \
	palette.make gswapp.make gswbundle.make clibrary.make \
	documentation.make \
	java-executable.template java-tool.make framework.make \
	native-library.make spec-rules.template \
        tar-exclude-list gnustep-make-help

MASTER_MAKE_FILES = \
        aggregate.make source-distribution.make rpm.make rules.make \
        application.make bundle.make clibrary.make ctool.make \
        documentation.make framework.make gswapp.make gswbundle.make \
        library.make objc.make java.make java-tool.make palette.make \
        resource-set.make service.make subproject.make test-application.make \
        test-library.make test-tool.make tool.make

INSTANCE_MAKE_FILES = \
        rules.make \
        application.make bundle.make clibrary.make ctool.make \
        documentation.make framework.make gswapp.make gswbundle.make \
        library.make objc.make java.make java-tool.make palette.make \
        resource-set.make service.make subproject.make test-application.make \
        test-library.make test-tool.make tool.make

INSTANCE_SHARED_MAKE_FILES = bundle.make headers.make java.make \
                             stamp-string.make strings.make

INSTANCE_DOC_MAKE_FILES = autogsdoc.make gsdoc.make install_files.make \
                          javadoc.make latex.make texi.make

ifeq ($(messages),yes)
  EC = 
else
  EC = @
endif

all: generated-files
	$(EC)(echo "Thanks.  All is ready to install.")

install: generated-files
	$(EC)(echo "Creating system tools directory: $(tooldir)"; \
	 $(srcdir)/mkinstalldirs $(tooldir); \
	 echo "Creating makefile directories in: $(makedir)"; \
	 $(srcdir)/mkinstalldirs \
		$(makedir) \
		$(makedir)/$(GNUSTEP_TARGET_CPU) \
		$(makedir)/$(GNUSTEP_TARGET_DIR) \
		$(makedir)/$(GNUSTEP_TARGET_LDIR) \
		$(makedir)/Additional \
		$(makedir)/Auxiliary \
		$(makedir)/Master \
		$(makedir)/Instance \
		$(makedir)/Instance/Shared \
		$(makedir)/Instance/Documentation)
	$(EC)(echo "Installing GNUstep configuration file in $(GNUSTEP_CONFIG_FILE)"; \
	 $(srcdir)/mkinstalldirs "$(GNUSTEP_CONFIG_FILE_DIR)"; \
	 $(INSTALL_DATA) GNUstep.conf "$(GNUSTEP_CONFIG_FILE)")
	 $(EC)(echo "Installing gnustep-make support software")
	 $(EC)(for f in config.guess config.sub install-sh mkinstalldirs \
		clean_cpu.sh clean_os.sh \
		clean_vendor.sh cpu.sh os.sh vendor.sh \
		print_unique_pathlist.sh \
		relative_path.sh strip_makefiles.sh; do \
	     $(INSTALL_PROGRAM) -m 755 $(srcdir)/$$f $(makedir); \
	   done)
	 $(EC)($(INSTALL_DATA) GNUstep.sh $(makedir); \
	  $(INSTALL_DATA) GNUstep.csh $(makedir); \
	  $(INSTALL_DATA) filesystem.sh $(makedir); \
	  $(INSTALL_DATA) filesystem.csh $(makedir); \
	  $(INSTALL_DATA) $(srcdir)/ld_lib_path.sh $(makedir); \
	  $(INSTALL_DATA) $(srcdir)/ld_lib_path.csh $(makedir); \
	  $(INSTALL_DATA) $(srcdir)/GNUstep-reset.sh $(makedir); \
	  $(INSTALL_PROGRAM) -m 755 fixpath.sh $(makedir); \
	  $(INSTALL_PROGRAM) -m 755 openapp $(tooldir); \
	  $(INSTALL_PROGRAM) -m 755 debugapp $(tooldir); \
	  $(INSTALL_PROGRAM) -m 755 opentool $(tooldir); \
	  $(INSTALL_PROGRAM) -m 755 gnustep-config $(tooldir))
	 $(EC)(echo "Installing makefiles"; \
	   for f in $(MAKE_FILES); do \
	     $(INSTALL_DATA) $(srcdir)/$$f $(makedir); \
	   done; \
	   for f in $(MASTER_MAKE_FILES); do \
	     $(INSTALL_DATA) $(srcdir)/Master/$$f $(makedir)/Master; \
	   done; \
	   for f in $(INSTANCE_MAKE_FILES); do \
	     $(INSTALL_DATA) $(srcdir)/Instance/$$f $(makedir)/Instance; \
	   done; \
	   for f in $(INSTANCE_SHARED_MAKE_FILES); do \
	     $(INSTALL_DATA) $(srcdir)/Instance/Shared/$$f \
	                     $(makedir)/Instance/Shared; \
	   done; \
	   for f in $(INSTANCE_DOC_MAKE_FILES); do \
	     $(INSTALL_DATA) $(srcdir)/Instance/Documentation/$$f \
	                     $(makedir)/Instance/Documentation; \
	   done; \
	   $(INSTALL_DATA) app-wrapper.template $(makedir); \
	   $(INSTALL_DATA) executable.template $(makedir); \
	   $(INSTALL_DATA) config-noarch.make $(makedir); \
	   $(INSTALL_DATA) config.make $(makedir)/$(GNUSTEP_TARGET_LDIR))
	$(EC)(if [ "@GNUSTEP_STRIP_MAKEFILES@" = "strip" ]; then \
	   echo "Stripping makefiles and shell scripts..."; \
	   cd $(makedir); ./strip_makefiles.sh; \
	   fi)

# FIXME - review the issue of this config.site.  What is it used for ?
#	 $(EC)($(srcdir)/mkinstalldirs $(GNUSTEP_SYSTEM_ROOT)/share; \
#	   $(INSTALL_DATA) $(srcdir)/config.site $(GNUSTEP_SYSTEM_ROOT)/share)

uninstall:
	for f in config.guess config.sub install-sh mkinstalldirs \
		clean_cpu.sh clean_os.sh \
		clean_vendor.sh cpu.sh ld_lib_path.sh os.sh \
		vendor.sh \
		print_unique_pathlist.sh \
		ld_lib_path.csh fixpath.sh \
		filesystem.sh filesystem.csh \
	        GNUstep.sh GNUstep.csh GNUstep-reset.sh \
		relative_path.sh strip_makefiles.sh; do \
	  rm -f $(makedir)/$$f; \
	done
	rm -f $(tooldir)/openapp; \
	rm -f $(tooldir)/debugapp; \
	rm -f $(tooldir)/opentool; \
	rm -f $(tooldir)/gnustep-config; \
	for f in $(MAKE_FILES); do \
	  rm -f $(makedir)/$$f; \
	done
	for f in $(MASTER_MAKE_FILES); do \
	  rm -f $(makedir)/Master/$$f; \
	done
	for f in $(INSTANCE_MAKE_FILES); do \
	  rm -f $(makedir)/Instance/$$f; \
	done
	for f in $(INSTANCE_SHARED_MAKE_FILES); do \
	  rm -f $(makedir)/Instance/Shared/$$f; \
	done
	for f in $(INSTANCE_DOC_MAKE_FILES); do \
	  rm -f $(makedir)/Instance/Documentation/$$f; \
	done
	rm -f $(makedir)/executable.template
	rm -f $(makedir)/app-wrapper.template
	rm -f $(GNUSTEP_SYSTEM_ROOT)/share/config.site
	rm -f $(makedir)/config-noarch.make
	rm -f $(makedir)/$(GNUSTEP_TARGET_LDIR)/config.make
	-for f in $(makedir)/Instance/Documentation \
		$(makedir)/Instance/Shared \
		$(makedir)/Instance \
		$(makedir)/Master \
		$(makedir)/Auxiliary \
		$(makedir)/Additional \
		$(makedir)/$(GNUSTEP_TARGET_LDIR) \
		$(makedir)/$(GNUSTEP_TARGET_DIR) \
		$(makedir)/$(GNUSTEP_TARGET_CPU) \
		$(makedir); do \
	  test -d $$f && rmdir $$f; \
	done

clean:
	rm -f *~ Master/*~ Instance/*~ Instance/Shared/*~

distclean: clean
	rm -f GNUmakefile config-noarch.make config.make config.h
	rm -f config.cache config.log config.status
	rm -f openapp opentool executable.template
	rm -f GNUstep.sh GNUstep.csh fixpath.sh gnustep-config
	rm -f filesystem.make filesystem.sh filesystem.csh
	rm -f gnustep-make.spec GNUstep.conf
	rm -f config-precomp-test.log

svn-tag:
	svn copy $(SVNPREFIX)/trunk $(SVNPREFIX)/tags/make-$(VERTAG) \
	  -m "Tag version $(VERTAG)"

svn-dist:
	svn export $(SVNPREFIX)/tags/make-$(VERTAG) \
	  gnustep-make-$(GNUSTEP_MAKE_VERSION)
	tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
	rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)

svn-snapshot:
	svn export $(SVNPREFIX)/trunk \
	  gnustep-make-$(GNUSTEP_MAKE_VERSION)
	tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
	rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)

cvs-tag:
	cvs -z3 rtag make-$(VERTAG) make

cvs-dist:
	cvs -z3 export -r make-$(VERTAG) make
	mv make gnustep-make-$(GNUSTEP_MAKE_VERSION)
	tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
	rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)

cvs-snapshot:
	cvs -z3 export -D now make
	mv make gnustep-make-$(GNUSTEP_MAKE_VERSION)
	tar --gzip -cf gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz gnustep-make-$(GNUSTEP_MAKE_VERSION)
	rm -rf gnustep-make-$(GNUSTEP_MAKE_VERSION)

test-RPM_TOPDIR:
	@(if [ -z "$(RPM_TOPDIR)" ]; then                                  \
	  echo "Error - RPM_TOPDIR variable not set.";                     \
	  echo "You need to set it to the top of your rpm directory tree"; \
	  exit 1;                                                          \
	fi)

# The check for rpmbuild is for old RPM versions which didn't have
# rpmbuild and used 'rpm -ba' instead.  It can be removed when we are
# reasonably sure no more old RPM versions (not having rpmbuild), are
# still around.
rpm: test-RPM_TOPDIR dist
	cp ../gnustep-make-$(GNUSTEP_MAKE_VERSION).tar.gz $(RPM_TOPDIR)/SOURCES/
	cp gnustep-make.spec $(RPM_TOPDIR)/SPECS/
	cd $(RPM_TOPDIR)/SPECS/
	if which rpmbuild > /dev/null 2>/dev/null; then \
	  rpmbuild="rpmbuild"; \
	else \
	  if which rpm > /dev/null 2>/dev/null; then \
	    rpmbuild="rpm"; \
	  else \
	    echo "Error: You don't have rpm installed!"; \
	    rpmbuild="rpmbuild"; \
	  fi; \
	fi; \
	$${rpmbuild} -ba gnustep-make.spec

generated-files: GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh config-noarch.make config.make \
                 openapp opentool gnustep-make.spec executable.template gnustep-config \
                 filesystem.make filesystem.sh filesystem.csh GNUstep.conf

GNUmakefile: GNUmakefile.in config.status
	$(SHELL) config.status

GNUstep.sh: GNUstep.sh.in
	$(SHELL) config.status

GNUstep.csh: GNUstep.csh.in
	$(SHELL) config.status

GNUstep.conf: GNUstep.conf.in
	$(SHELL) config.status

fixpath.sh: fixpath.sh.in
	$(SHELL) config.status

filesystem.make: filesystem.make.in
	$(SHELL) config.status

filesystem.sh: filesystem.sh.in
	$(SHELL) config.status

filesystem.csh: filesystem.csh.in
	$(SHELL) config.status

config-noarch.make: config-noarch.make.in Version
	$(SHELL) config.status --recheck

config.make: config.make.in
	$(SHELL) config.status --recheck

openapp: openapp.in
	$(SHELL) config.status

opentool: opentool.in
	$(SHELL) config.status

gnustep-make.spec: gnustep-make.spec.in Version
	$(SHELL) config.status --recheck

executable.template: executable.template.in
	$(SHELL) config.status

gnustep-config: gnustep-config.in
	$(SHELL) config.status


syntax highlighted by Code2HTML, v. 0.9.1