# Copyright (c) 2004, 2005, Oracle
and/or its affiliates. All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# - 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 Oracle 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 waiters
# gnumake JDK=<java_home> OSNAME=solaris [OPT=true] [LIBARCH=sparc]
# gnumake JDK=<java_home> OSNAME=solaris [OPT=true] [LIBARCH=sparcv9]
# gnumake JDK=<java_home> OSNAME=linux [OPT=true]
# gnumake JDK=<java_home> OSNAME=win32 [OPT=true]
########################################################################
# Solaris Sun C Compiler Version 5.5
ifeq ($(OSNAME), solaris)
# Tell gnumake which compilers to use
# Sun Solaris Compiler options needed
# Check LIBARCH for any special compiler options
LIBARCH=$(shell uname -p)
COMMON_FLAGS+=-xarch=v8 -xregs=no%appl
ifeq ($(LIBARCH), sparcv9)
COMMON_FLAGS+=-xarch=v9 -xregs=no%appl
CXXFLAGS=-xO2 $(COMMON_FLAGS)
CXXFLAGS=-g $(COMMON_FLAGS)
# Object files needed to create library
OBJECTS=$(SOURCES:%.cpp=%.o)
# Library name and options needed to build it
# Libraries we are dependent on
# Building a shared library
# 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
CXXFLAGS=-O2 $(COMMON_FLAGS)
CXXFLAGS=-g $(COMMON_FLAGS)
# Object files needed to create library
OBJECTS=$(SOURCES:%.cpp=%.o)
# Library name and options needed to build it
LDFLAGS=-Wl,-soname=$(LIBRARY) -static-libgcc
# Libraries we are dependent on
# Building a shared library
LINK_SHARED=$(
LINK.cc) -shared -o $@
# Windows Microsoft C/C++ Optimizing Compiler Version 12
# Compiler options needed to build it
# Options that help find errors
CXXFLAGS= -Ox -Op -Zi $(COMMON_FLAGS)
CXXFLAGS= -Od -Zi $(COMMON_FLAGS)
# Object files needed to create library
OBJECTS=$(SOURCES:%.cpp=%.obj)
# Library name and options needed to build it
# Libraries we are dependent on
# Building a shared library
LINK_SHARED=link -dll -out:$@
CXXFLAGS += -I../agent_util
CXXFLAGS += -I$(JDK)/include -I$(JDK)/include/$(OSNAME)
$(LINK_SHARED) $(OBJECTS) $(LIBRARIES)
rm -f $(LIBRARY) $(OBJECTS)
LD_LIBRARY_PATH=`pwd` $(JDK)
/bin/java -agentlib:$(LIBNAME) -version
# Compilation rule only needed on Windows