make/common/Mapfile-vers.gmk

Sun, 21 Jun 2009 23:50:28 -0700

author
tbell
date
Sun, 21 Jun 2009 23:50:28 -0700
changeset 85
65b66117dbd7
parent 1
55540e827aef
child 158
91006f157c46
permissions
-rw-r--r--

Merge

duke@1 1 #
duke@1 2 # Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
duke@1 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@1 4 #
duke@1 5 # This code is free software; you can redistribute it and/or modify it
duke@1 6 # under the terms of the GNU General Public License version 2 only, as
duke@1 7 # published by the Free Software Foundation. Sun designates this
duke@1 8 # particular file as subject to the "Classpath" exception as provided
duke@1 9 # by Sun in the LICENSE file that accompanied this code.
duke@1 10 #
duke@1 11 # This code is distributed in the hope that it will be useful, but WITHOUT
duke@1 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@1 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@1 14 # version 2 for more details (a copy is included in the LICENSE file that
duke@1 15 # accompanied this code).
duke@1 16 #
duke@1 17 # You should have received a copy of the GNU General Public License version
duke@1 18 # 2 along with this work; if not, write to the Free Software Foundation,
duke@1 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@1 20 #
duke@1 21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@1 22 # CA 95054 USA or visit www.sun.com if you need additional information or
duke@1 23 # have any questions.
duke@1 24 #
duke@1 25
duke@1 26 #
duke@1 27 # Makefile for linking with mapfiles.
duke@1 28 #
duke@1 29 # NOTE: Not using a mapfile will expose all your extern functions and
duke@1 30 # extern data symbols as part of your interface, so unless your
duke@1 31 # extern names are safe from being mistaken as names from other
duke@1 32 # libraries, you better use a mapfile, or use a unique naming
duke@1 33 # convention on all your extern symbols.
duke@1 34 #
duke@1 35 # The mapfile will establish versioning by defining the exported interface.
duke@1 36 #
duke@1 37 # The mapfile can also force certain .o files or elf sections into the
duke@1 38 # the different segments of the resulting library/program image.
duke@1 39 #
duke@1 40 # The macro FILES_m can contain any number of mapfiles.
duke@1 41 #
duke@1 42
duke@1 43 # Always make sure 'all' is the default rule
duke@1 44 mapfile_default_rule: all
duke@1 45
duke@1 46 ifeq ($(PLATFORM), solaris)
duke@1 47
duke@1 48 ifeq ($(VARIANT), OPT)
duke@1 49 # OPT build MUST have a mapfile?
duke@1 50 ifndef FILES_m
duke@1 51 FILES_m = mapfile-vers
duke@1 52 endif
duke@1 53
duke@1 54 # If we are re-ordering functions in this solaris library, we need to make
duke@1 55 # sure that -xF is added to the compile lines. This option is critical and
duke@1 56 # enables the functions to be reordered.
duke@1 57 ifdef FILES_reorder
duke@1 58 CFLAGS_OPT += -xF
duke@1 59 CXXFLAGS_OPT += -xF
duke@1 60 endif
duke@1 61
duke@1 62 INIT += $(TEMPDIR)/mapfile-vers
duke@1 63
duke@1 64 $(TEMPDIR)/mapfile-vers : $(FILES_m) $(FILES_reorder)
duke@1 65 $(prep-target)
duke@1 66 $(CAT) $(FILES_m) > $@
duke@1 67 ifdef FILES_reorder
duke@1 68 $(SED) -e 's=OUTPUTDIR=$(OUTPUTDIR)=' $(FILES_reorder) >> $@
duke@1 69 endif
duke@1 70 endif # VARIANT
duke@1 71
duke@1 72 ifndef LDNOMAP
duke@1 73 LDMAPFLAGS_OPT = -M$(TEMPDIR)/mapfile-vers
duke@1 74 LDMAPFLAGS_DBG = $(FILES_m:%=-M%)
duke@1 75 endif
duke@1 76
duke@1 77 endif # PLATFORM
duke@1 78
duke@1 79
duke@1 80 ifeq ($(PLATFORM), linux)
duke@1 81
duke@1 82 ifeq ($(VARIANT), OPT)
duke@1 83 # OPT build MUST have a mapfile?
duke@1 84 ifndef FILES_m
duke@1 85 FILES_m = mapfile-vers
duke@1 86 endif
duke@1 87 endif # VARIANT
duke@1 88
duke@1 89 ifndef LDNOMAP
duke@1 90 LDMAPFLAGS_OPT = $(FILES_m:%=-Xlinker -version-script=%)
duke@1 91 LDMAPFLAGS_DBG = $(FILES_m:%=-Xlinker -version-script=%)
duke@1 92 endif
duke@1 93
duke@1 94 endif # PLATFORM
duke@1 95
duke@1 96 LDFLAGS_OPT += $(LDMAPFLAGS_OPT)
duke@1 97 LDFLAGS_DBG += $(LDMAPFLAGS_DBG)
duke@1 98

mercurial