--- /dev/null Thu Jan 7 14:58:25 2010 +++ new/jdk/src/share/demo/jvmti/compiledMethodLoad/sample.makefile.txt Thu Jan 7 14:58:25 2010 @@ -0,0 +1,148 @@ +# +# Copyright 2010 Sun Microsystems, Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# - Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# - Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# - Neither the name of Sun Microsystems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +######################################################################## +# +# Sample GNU Makefile for building JVMTI Demo compiledMethodLoad +# +# Example uses: +# gnumake JDK= OSNAME=solaris [OPT=true] [LIBARCH=sparc] +# gnumake JDK= OSNAME=solaris [OPT=true] [LIBARCH=sparcv9] +# gnumake JDK= OSNAME=linux [OPT=true] +# gnumake JDK= OSNAME=win32 [OPT=true] +# +######################################################################## + +# Source lists +LIBNAME=compiledMethodLoad +SOURCES=compiledMethodLoad.c ../agent_util/agent_util.c + +# Solaris Sun C Compiler Version 5.5 +ifeq ($(OSNAME), solaris) + # Sun Solaris Compiler options needed + COMMON_FLAGS=-mt -KPIC + # Options that help find errors + COMMON_FLAGS+= -Xa -v -xstrconst -xc99=%none + # Check LIBARCH for any special compiler options + LIBARCH=$(shell uname -p) + ifeq ($(LIBARCH), sparc) + COMMON_FLAGS+=-xarch=v8 -xregs=no%appl + endif + ifeq ($(LIBARCH), sparcv9) + COMMON_FLAGS+=-xarch=v9 -xregs=no%appl + endif + ifeq ($(OPT), true) + CFLAGS=-xO2 $(COMMON_FLAGS) + else + CFLAGS=-g $(COMMON_FLAGS) + endif + # Object files needed to create library + OBJECTS=$(SOURCES:%.c=%.o) + # Library name and options needed to build it + LIBRARY=lib$(LIBNAME).so + LDFLAGS=-z defs -ztext + # Libraries we are dependent on + LIBRARIES= -lc + # Building a shared library + LINK_SHARED=$(LINK.c) -G -o $@ +endif + +# Linux GNU C Compiler +ifeq ($(OSNAME), linux) + # GNU Compiler options needed to build it + COMMON_FLAGS=-fno-strict-aliasing -fPIC -fno-omit-frame-pointer + # Options that help find errors + COMMON_FLAGS+= -W -Wall -Wno-unused -Wno-parentheses + ifeq ($(OPT), true) + CFLAGS=-O2 $(COMMON_FLAGS) + else + CFLAGS=-g $(COMMON_FLAGS) + endif + # Object files needed to create library + OBJECTS=$(SOURCES:%.c=%.o) + # Library name and options needed to build it + LIBRARY=lib$(LIBNAME).so + LDFLAGS=-Wl,-soname=$(LIBRARY) -static-libgcc -mimpure-text + # Libraries we are dependent on + LIBRARIES=-lc + # Building a shared library + LINK_SHARED=$(LINK.c) -shared -o $@ +endif + +# Windows Microsoft C/C++ Optimizing Compiler Version 12 +ifeq ($(OSNAME), win32) + CC=cl + # Compiler options needed to build it + COMMON_FLAGS=-Gy -DWIN32 + # Options that help find errors + COMMON_FLAGS+=-W0 -WX + ifeq ($(OPT), true) + CFLAGS= -Ox -Op -Zi $(COMMON_FLAGS) + else + CFLAGS= -Od -Zi $(COMMON_FLAGS) + endif + # Object files needed to create library + OBJECTS=$(SOURCES:%.c=%.obj) + # Library name and options needed to build it + LIBRARY=$(LIBNAME).dll + LDFLAGS= + # Libraries we are dependent on + LIBRARIES= + # Building a shared library + LINK_SHARED=link -dll -out:$@ +endif + +# Common -I options +CFLAGS += -I. +CFLAGS += -I../agent_util +CFLAGS += -I$(JDK)/include -I$(JDK)/include/$(OSNAME) + +# Default rule +all: $(LIBRARY) + +# Build native library +$(LIBRARY): $(OBJECTS) + $(LINK_SHARED) $(OBJECTS) $(LIBRARIES) + +# Cleanup the built bits +clean: + rm -f $(LIBRARY) $(OBJECTS) + +# Simple tester +test: all + LD_LIBRARY_PATH=`pwd` $(JDK)/bin/java -agentlib:$(LIBNAME) -version + +# Compilation rule only needed on Windows +ifeq ($(OSNAME), win32) +%.obj: %.c + $(COMPILE.c) $< +endif +