#  -*-makefile-gmake-*-
#  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 Lesser 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 Lesser 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
#
ifeq ($(OBJC2RUNTIME),0)
after-install::
	$(MKDIRS) $(GNUSTEP_HEADERS)/ObjectiveC2
	$(MKDIRS) $(GNUSTEP_HEADERS)/ObjectiveC2/objc
	for file in $(OBJECTIVEC2_HEADERS); do \
	  $(INSTALL_DATA) ../Headers/ObjectiveC2/objc/$$file \
	    $(GNUSTEP_HEADERS)/ObjectiveC2/objc/$$file ; \
	done
endif
after-install::
	$(MKDIRS) $(GNUSTEP_HEADERS)/GNUstepBase
	for file in $(GNUSTEPBASE_HEADERS); do \
	  $(INSTALL_DATA) ../Headers/GNUstepBase/$$file \
	  $(GNUSTEP_HEADERS)/GNUstepBase/$$file ; \
	done
	$(INSTALL_DATA) $(GNUSTEP_TARGET_DIR)/GNUstepBase/GSConfig.h \
	  $(GNUSTEP_HEADERS)/GNUstepBase/GSConfig.h
	if [ "$(DESTDIR)" = "" ]; 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
ifeq ($(OBJC2RUNTIME),0)
before-uninstall::
	for file in $(OBJECTIVEC2_HEADERS); do \
	  rm -f $(GNUSTEP_HEADERS)/ObjectiveC2/objc/$$file ; \
	done
endif

before-uninstall::
	for file in $(GNUSTEPBASE_HEADERS); do \
	  rm -f $(GNUSTEP_HEADERS)/GNUstepBase/$$file ; \
	done
	rm -f $(GNUSTEP_HEADERS)/$(GNUSTEP_TARGET_DIR)/GNUstepBase/GSConfig.h

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

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

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

# Things to do after distcleaning
after-distclean::
	rm -f $(GNUSTEP_TARGET_DIR)/config.h
	rm -f $(GNUSTEP_TARGET_DIR)/GNUstepBase/GSConfig.h
#	rm -rf $(GNUSTEP_TARGET_DIR)

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

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

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

#
# The following header files are specific to a target, so to enable multiple
# builds in the same directory, we copy them to a target-specific subdirectory
# which will be found by the compiler first when compiling for that target
#
$(GNUSTEP_TARGET_DIR)/config.h: ../config.status
	$(MKDIRS) $(GNUSTEP_TARGET_DIR)
	-cp $(HEADER_DIR_BASE)/config.h $(GNUSTEP_TARGET_DIR)
	-touch $(GNUSTEP_TARGET_DIR)/config.h

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

#
# Files where optimisation breaks the code!
# These have to filter the optimisation flag out.
#
libgnustep-base-entry.m_FILE_FILTER_OUT_FLAGS = -O%   # gcc 4.4 on mingw

#
# 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)

