Mapfile-vers.gmk revision 2362
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# This code is free software; you can redistribute it and/or modify it
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# under the terms of the GNU General Public License version 2 only, as
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# published by the Free Software Foundation. Oracle designates this
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# particular file as subject to the "Classpath" exception as provided
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# by Oracle in the LICENSE file that accompanied this code.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# This code is distributed in the hope that it will be useful, but WITHOUT
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# version 2 for more details (a copy is included in the LICENSE file that
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# accompanied this code).
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# You should have received a copy of the GNU General Public License version
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# 2 along with this work; if not, write to the Free Software Foundation,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# or visit www.oracle.com if you need additional information or have any
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# questions.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Makefile for linking with mapfiles.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# NOTE: Not using a mapfile will expose all your extern functions and
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# extern data symbols as part of your interface, so unless your
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# extern names are safe from being mistaken as names from other
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# libraries, you better use a mapfile, or use a unique naming
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# convention on all your extern symbols.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# The mapfile will establish versioning by defining the exported interface.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# The mapfile can also force certain .o files or elf sections into the
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# the different segments of the resulting library/program image.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# The macro FILES_m can contain any number of mapfiles.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk# Always make sure 'all' is the default rule
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkmapfile_default_rule: all
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkifeq ($(PLATFORM), solaris)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkifeq ($(VARIANT), OPT)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk # OPT build MUST have a mapfile?
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ifndef FILES_m
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk FILES_m = mapfile-vers
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk endif
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk # If we are re-ordering functions in this solaris library, we need to make
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk # sure that -xF is added to the compile lines. This option is critical and
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk # enables the functions to be reordered.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ifdef FILES_reorder
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk CFLAGS_OPT += -xF
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk CXXFLAGS_OPT += -xF
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk endif
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkINIT += $(TEMPDIR)/mapfile-vers
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk$(TEMPDIR)/mapfile-vers : $(FILES_m) $(FILES_reorder)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(prep-target)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(CAT) $(FILES_m) > $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ifdef FILES_reorder
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk $(SED) -e 's=OUTPUTDIR=$(OUTPUTDIR)=' $(FILES_reorder) >> $@
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk endif
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkendif # VARIANT
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkifndef LDNOMAP
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk LDMAPFLAGS_OPT = -M$(TEMPDIR)/mapfile-vers
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk LDMAPFLAGS_DBG = $(FILES_m:%=-M%)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkendif
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkendif # PLATFORM
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkifeq ($(PLATFORM), linux)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkifeq ($(VARIANT), OPT)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk # OPT build MUST have a mapfile?
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ifndef FILES_m
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk FILES_m = mapfile-vers
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk endif
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkendif # VARIANT
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkifndef LDNOMAP
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk LDMAPFLAGS_OPT = $(FILES_m:%=-Xlinker -version-script=%)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk LDMAPFLAGS_DBG = $(FILES_m:%=-Xlinker -version-script=%)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkendif
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkendif # PLATFORM
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkLDFLAGS_OPT += $(LDMAPFLAGS_OPT)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkLDFLAGS_DBG += $(LDMAPFLAGS_DBG)
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk