annotate make/java/instrument/Makefile @ 2080:d30f2e22fffd

6911737: Module build: generate modules with native libraries and any other files not in jar Summary: create modules under OUTPUTDIR/modules directory containing resources, native libraries Reviewed-by: alanb, ohair
author mchung
date Thu, 07 Jan 2010 08:14:48 -0800
parents e2de121c27c4
children 00cd9dc3c2b5
rev   line source
duke@0 1 #
duke@0 2 # Copyright 2003-2006 Sun Microsystems, Inc. All Rights Reserved.
duke@0 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@0 4 #
duke@0 5 # This code is free software; you can redistribute it and/or modify it
duke@0 6 # under the terms of the GNU General Public License version 2 only, as
duke@0 7 # published by the Free Software Foundation. Sun designates this
duke@0 8 # particular file as subject to the "Classpath" exception as provided
duke@0 9 # by Sun in the LICENSE file that accompanied this code.
duke@0 10 #
duke@0 11 # This code is distributed in the hope that it will be useful, but WITHOUT
duke@0 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@0 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@0 14 # version 2 for more details (a copy is included in the LICENSE file that
duke@0 15 # accompanied this code).
duke@0 16 #
duke@0 17 # You should have received a copy of the GNU General Public License version
duke@0 18 # 2 along with this work; if not, write to the Free Software Foundation,
duke@0 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@0 20 #
duke@0 21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@0 22 # CA 95054 USA or visit www.sun.com if you need additional information or
duke@0 23 # have any questions.
duke@0 24 #
duke@0 25
duke@0 26 # Makefile for building the Java Programming Language Instrumentation Services
duke@0 27 # agent, supporting java.lang.instrument
duke@0 28
duke@0 29 BUILDDIR = ../..
mchung@2080 30 MODULE = instrument
duke@0 31 PACKAGE = sun.instrument
duke@0 32 LIBRARY = instrument
duke@0 33 PRODUCT = sun
duke@0 34
duke@0 35 # Configure the CFLAGS for this library. Use static binding so that there
duke@0 36 # are not dependencies on modules not on the search patch when invoked from
duke@0 37 # the Windows system directory (or elsewhere).
duke@0 38 MS_RUNTIME_STATIC=true
duke@0 39
duke@0 40 FILES_m = mapfile-vers
duke@0 41
duke@0 42 include $(BUILDDIR)/common/Defs.gmk
duke@0 43
duke@0 44 # Use the mapfile-vers (See the mapfile located with this Makefile)
duke@0 45 ifdef FILES_m
duke@0 46 include $(BUILDDIR)/common/Mapfile-vers.gmk
duke@0 47 endif
duke@0 48
duke@0 49 #
duke@0 50 # Files to compile.
duke@0 51 #
duke@0 52 FILES_c = \
duke@0 53 EncodingSupport.c \
duke@0 54 EncodingSupport_md.c \
duke@0 55 FileSystemSupport_md.c \
duke@0 56 InstrumentationImplNativeMethods.c \
duke@0 57 InvocationAdapter.c \
duke@0 58 JarFacade.c \
duke@0 59 JPLISAgent.c \
duke@0 60 JPLISAssert.c \
duke@0 61 JavaExceptions.c \
duke@0 62 PathCharsValidator.c \
duke@0 63 Reentrancy.c \
duke@0 64 Utilities.c
duke@0 65
duke@0 66 #
duke@0 67 # -jaragent support requires zip and jar manfiest parser to be compiled
duke@0 68 # into the instrument library.
duke@0 69 #
duke@0 70 IO_PLATFORM_SRC = $(PLATFORM_SRC)/native/java/io
duke@0 71 LAUNCHER_SHARE_SRC = $(SHARE_SRC)/bin
duke@0 72 LAUNCHER_PLATFORM_SRC = $(PLATFORM_SRC)/bin
duke@0 73
duke@0 74 FILES_c += \
duke@0 75 canonicalize_md.c
duke@0 76
duke@0 77 FILES_export = \
duke@0 78 sun/instrument/InstrumentationImpl.java
duke@0 79
duke@0 80 #
duke@0 81 # This controls the ability to do logging in the library.
duke@0 82 #
duke@0 83 CPPFLAGS_DBG += -DJPLIS_LOGGING
duke@0 84 CPPFLAGS_OPT += -DNO_JPLIS_LOGGING
duke@0 85
duke@0 86 OTHER_INCLUDES = -I$(SHARE_SRC)/instrument
duke@0 87 OTHER_INCLUDES += -I$(PLATFORM_SRC)/instrument
duke@0 88 OTHER_INCLUDES += -I$(IO_PLATFORM_SRC)
duke@0 89 OTHER_INCLUDES += -I$(LAUNCHER_SHARE_SRC) -I$(LAUNCHER_PLATFORM_SRC)
duke@0 90
duke@0 91 #
duke@0 92 # Create a dependency on libjli (Java Launcher Infrastructure)
duke@0 93 #
duke@0 94 # On UNIX, this is a relative dependency using $ORIGIN. Unfortunately, to
duke@0 95 # do this reliably on Linux takes a different syntax than Solaris.
duke@0 96 #
duke@0 97 # On Windows, this is done by using the same directory as the executable
duke@0 98 # itself, as with all the Windows libraries.
duke@0 99 #
duke@0 100 ifeq ($(PLATFORM), windows)
duke@0 101 OTHER_LDLIBS += $(OUTPUTDIR)/tmp/java/jli/$(OBJDIRNAME)/static/jli.lib
duke@0 102 OTHER_LCF += -export:Agent_OnAttach
duke@0 103 # equivalent of strcasecmp is stricmp on Windows
duke@0 104 CPPFLAGS_COMMON += -Dstrcasecmp=stricmp
duke@0 105 else
duke@0 106 LDFLAGS += -L $(LIBDIR)/$(LIBARCH)/jli
duke@0 107 OTHER_LDLIBS += -ljli
duke@0 108 OTHER_LDLIBS += -ldl
duke@0 109 ifeq ($(PLATFORM), solaris)
duke@0 110 LDFLAGS += -R \$$ORIGIN/jli
duke@0 111 endif
duke@0 112 ifeq ($(PLATFORM), linux)
gbenson@1772 113 LDFLAGS += -Wl,-z -Wl,origin
duke@0 114 LDFLAGS += -Wl,--allow-shlib-undefined
duke@0 115 LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
duke@0 116 endif
duke@0 117 endif
duke@0 118
duke@0 119 #
duke@0 120 # Library to compile.
duke@0 121 #
duke@0 122 include $(BUILDDIR)/common/Library.gmk
duke@0 123
duke@0 124 # We don't want to link against -ljava
duke@0 125 JAVALIB=
duke@0 126
duke@0 127 #
duke@0 128 # Add to ambient vpath so we pick up the library files
duke@0 129 #
duke@0 130 vpath %.c $(SHARE_SRC)/instrument $(PLATFORM_SRC)/instrument
duke@0 131 vpath %.c $(IO_PLATFORM_SRC)
duke@0 132