#
#  Makefile.postamble
#
#  Copyright (C) 1997 Free Software Foundation, Inc.
#
#  Author: Scott Christley <scottc@net-community.com>
#
#  This file is part of the GNUstep Base Library.
#
#  This library is free software; you can redistribute it and/or
#  modify it under the terms of the GNU Library General Public
#  License as published by the Free Software Foundation; either
#  version 2 of the License, or (at your option) any later version.
#
#  This library 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
#  Library General Public License for more details.
#
#  If you are interested in a warranty or support for this source code,
#  contact Scott Christley at scottc@net-community.com
#
#  You should have received a copy of the GNU Library 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.

#
#   Makefile.postamble
#
#   Project specific makefile rules
#
#   Uncomment the targets you want.
#   The double colons (::) are important, do not make them single colons
#   otherwise the normal makefile rules will not be performed.
#

# Things to do before compiling
before-all::  $(GENERATED_HFILES)

# Things to do after compiling
after-all:: Info-gnustep.plist

# Things to do before installing
# before-install::

# Things to do after installing
#
# Unfortunately the way the header files are placed in relationship
# to the source we must install the GNU header manually
# Ayers 2003-07-31: This statement should be reevaluated!
after-install::
	for file in $(GNU_HEADERS); do \
	  $(INSTALL_DATA) ../Headers/Additions/GNUstepBase/$$file \
	    $(GNUSTEP_HEADERS)/GNUstepBase/$$file ; \
	done
	for file in $(UNICODE_HEADERS); do \
	  $(INSTALL_DATA) ../Headers/Additions/GNUstepBase/$$file \
	  $(GNUSTEP_HEADERS)/GNUstepBase/$$file ; \
	done
	$(INSTALL_DATA) $(GNUSTEP_TARGET_DIR)/GSConfig.h \
	    $(GNUSTEP_HEADERS)/$(GNUSTEP_TARGET_DIR)
	if [ "$(INSTALL_ROOT_DIR)" = "" ]; then \
	  services=/etc/services; \
	  if [ "`$(WHOAMI)`" != root ]; then \
	      echo "WARNING: Please add the following lines to $$services"; \
	      echo "gdomap 538/tcp # GNUstep distrib objects"; \
	      echo "gdomap 538/udp # GNUstep distrib objects"; \
	  else \
	    if [ "`fgrep gdomap $$services 2>/dev/null`" = "" ]; then \
	      echo "GNUstep addons for /etc/services written to $$services"; \
	      set -x; \
	      echo "gdomap 538/tcp # GNUstep distrib objects" >> $$services; \
	      echo "gdomap 538/udp # GNUstep distrib objects" >> $$services; \
	    fi; \
	  fi; \
	fi

# Things to do before uninstalling
# before-uninstall::

# Things to do after uninstalling
before-uninstall::
	for file in $(GNU_HEADERS); do \
	  rm -f $(GNUSTEP_HEADERS)/GNUstepBase/$$file ; \
	done
	for file in $(UNICODE_HEADERS); do \
	  rm -f $(GNUSTEP_HEADERS)/GNUstepBase/$$file ; \
	done
	rm -f $(GNUSTEP_HEADERS)/$(GNUSTEP_TARGET_DIR)/GSConfig.h

# Things to do before cleaning
# before-clean::

# Things to do after cleaning
after-clean::
	rm -f libgnustep-base.def

# Things to do before distcleaning
# before-distclean::

# Things to do after distcleaning
after-distclean::
	rm -f mframe/mframe.h Foundation \
		NSNumber[0-9]*.m GSValue[0-9]*.m
	rm -rf $(GNUSTEP_TARGET_DIR)/config.h
	rm -rf $(GNUSTEP_TARGET_DIR)/mframe.h
	rm -rf $(GNUSTEP_TARGET_DIR)/GSConfig.h
	rm -rf $(GNUSTEP_TARGET_CPU)

# Things to do before checking
# before-check::

# Things to do after checking
# after-check::

$(GNUSTEP_OBJ_DIR)/objc-load${OEXT}: dynamic-load.h

dynamic-load.h: ../config.status
	rm -f dynamic-load.h
	cp $(DYNAMIC_LINKER)-load.h dynamic-load.h

$(GNUSTEP_OBJ_DIR)/preface${OEXT}: $(HEADER_DIR_BASE)/preface.h

#
# The config.h file is specific to a target
#
$(GNUSTEP_TARGET_DIR)/config.h: ../config.status
	$(MKDIRS) $(GNUSTEP_TARGET_DIR)
	-mv $(HEADER_DIR_BASE)/config.h $(GNUSTEP_TARGET_DIR)
	-touch $(GNUSTEP_TARGET_DIR)/config.h

$(GNUSTEP_TARGET_DIR)/GSConfig.h: ../config.status
	$(MKDIRS) $(GNUSTEP_TARGET_DIR)
	-mv $(HEADER_DIR_BASE)/GSConfig.h $(GNUSTEP_TARGET_DIR)
	-touch $(GNUSTEP_TARGET_DIR)/GSConfig.h

$(GNUSTEP_TARGET_DIR)/mframe.h: mframe/config.status
	$(MKDIRS) $(GNUSTEP_TARGET_DIR)
	-mv mframe/mframe.h $(GNUSTEP_TARGET_DIR)
	-touch $(GNUSTEP_TARGET_DIR)/mframe.h

#
#       Files where optimisation breaks the code!
#       These have to filter the optimisation flag out.
#       [You need gnustep-make >= 1.2.0 to compile this code]
#
mframe.m_FILE_FILTER_OUT_FLAGS = -O%
NSConnection.m_FILE_FILTER_OUT_FLAGS = -O%
NSInvocation.m_FILE_FILTER_OUT_FLAGS = -O%

#
# Make list of class names for DLL exports. Uses the actual classes from
# the .o files, so it should really have everything needed.
#
libgnustep-base.def: $(OBJ_FILES_TO_LINK)
	rm -f $@
	rm -f _tmp.def
	cat win32-def.top > $@
	nm $^ | grep '^........ [TR] _' | sed 's/[^_]*_//' > _tmp.def
	cat _tmp.def | grep "_class_name_" >> $@
	rm -rf _tmp.def

#
# Make an Info.plist since libraries don't have these normally
#
Info-gnustep.plist: ../Version
	$(ECHO_CREATING)(echo "{"; \
	echo "  NSExecutable = \"gnustep-base\";"; \
	echo "  NSPrincipalClass = \"NSObject\";"; \
	echo "  GSBundleShortVersionString = \"$(VERSION)\";"; \
	echo "  GSBundleVersion = $(VERSION_NUMBER);"; \
	echo "  CFBundleShortVersionString = \"$(VERSION)\";"; \
	echo "  CFBundleVersion = $(VERSION_NUMBER);"; \
	echo "}") > $@$(END_ECHO)



syntax highlighted by Code2HTML, v. 0.9.1