libs-base/Source/Makefile.postamble
2018-01-19 08:44:50 +00:00

167 lines
5.2 KiB
Text

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