2002-03-28 11:24:43 +00:00
#-*- mode: Fundamental; tab-width: 4; -*-
# ex:ts=4
#
# bsd.java.mk - Support for Java-based ports.
#
# Created by: Ernst de Haan <znerd@FreeBSD.org>
#
# For FreeBSD committers:
# Please send all suggested changes to the maintainer instead of committing
# them to CVS yourself.
#
# $FreeBSD$
#
. i f ! d e f i n e d ( J a v a _ I n c l u d e )
Java_Include = bsd.java.mk
2004-09-03 06:11:10 +00:00
Java_Include_MAINTAINER = glewis@FreeBSD.org hq@FreeBSD.org
2002-03-28 11:24:43 +00:00
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
2004-04-05 21:40:04 +00:00
# Variables that each port can define:
#
# USE_JAVA Should be defined to the remaining variables to have any
# effect
#
# JAVA_VERSION List of space-separated suitable java versions for the
# port. An optional "+" allows you to specify a range of
# versions. (allowed values: 1.1[+] 1.2[+] 1.3[+] 1.4[+])
#
# JAVA_OS List of space-separated suitable JDK port operating systems
# for the port. (allowed values: native linux)
#
# JAVA_VENDOR List of space-separated suitable JDK port vendors for the
# port. (allowed values: freebsd bsdjava sun ibm blackdown)
#
# JAVA_BUILD When set, it means that the selected JDK port should be
# added to build dependencies for the port.
#
# JAVA_RUN This variable works exactly the same as JAVA_BUILD but
# regarding run dependencies.
#
# USE_JIKES Whether the port should or should not use jikes(1) to build.
2004-09-02 13:18:59 +00:00
# See Stage 6 header for further detail.
2004-04-05 21:40:04 +00:00
#
2004-08-02 21:44:17 +00:00
# USE_ANT Should be defined when the port uses Apache Ant. Ant is thus
# considered to be the sub-make command. When no 'do-build'
# target is defined by the port, a default one will be set
# that simply runs Ant according to MAKE_ENV, MAKE_ARGS and
2005-02-25 13:29:52 +00:00
# ALL_TARGET. Read the documentation in bsd.port.mk for more
2004-08-02 21:44:17 +00:00
# information.
#
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
2004-04-05 21:40:04 +00:00
# Variables defined for the port:
#
# JAVA_PORT The name of the JDK port. (e.g. 'java/jdk14')
#
# JAVA_PORT_VERSION The version of the JDK port. (e.g. '1.4')
#
# JAVA_PORT_OS The operating system used by the JDK port. (e.g. 'linux')
#
# JAVA_PORT_VENDOR The vendor of the JDK port. (e.g. 'sun')
#
# JAVA_PORT_OS_DESCRIPTION Description of the operating system used by the
# JDK port. (e.g. 'Linux')
#
# JAVA_PORT_VENDOR_DESCRIPTION Description of the vendor of the JDK port.
# (e.g. 'FreeBSD Foundation')
#
# JAVA_HOME Path to the installation directory of the JDK. (e.g.
# '/usr/local/jdk1.3.1')
#
# JAVAC Path to the Java compiler to use. (e.g.
# '/usr/local/jdk1.1.8/bin/javac' or '/usr/local/bin/jikes')
#
# JAR Path to the JAR tool to use. (e.g.
# '/usr/local/jdk1.2.2/bin/jar' or '/usr/local/bin/fastjar')
#
# APPLETVIEWER Path to the appletviewer utility. (e.g.
# '/usr/local/linux-jdk1.2.2/bin/appletviewer')
#
# JAVA Path to the java executable. Use this for executing Java
# programs. (e.g. '/usr/local/jdk1.3.1/bin/java')
#
# JAVADOC Path to the javadoc utility program.
#
# JAVAH Path to the javah program.
#
# JAVAP Path to the javap program.
#
# JAVA_KEYTOOL Path to the keytool utility program. This settings is
# availble only if the JDK is Java 1.2 or higher.
#
# JAVA_N2A Path to the native2ascii tool.
#
# JAVA_POLICYTOOL Path to the policytool program. This variable is available
# only if the JDK is Java 1.2 or higher.
#
# JAVA_SERIALVER Path to the serialver utility program.
#
# RMIC Path to the RMI stub/skeleton generator, rmic.
#
# RMIREGISTRY Path to the RMI registry program, rmiregistry.
#
# RMID Path to the RMI daemon program. This settings is only
# available if the JDK is Java 1.2 or higher.
#
# JAVA_CLASSES Path to the archive that contains the JDK class files. On
# JDK 1.2 or later, this is ${JAVA_HOME}/jre/lib/rt.jar.
2005-07-15 11:32:31 +00:00
# Earlier JDK's use ${JAVA_HOME}/lib/classes.zip.
2004-04-05 21:40:04 +00:00
#
2004-09-02 05:02:58 +00:00
# JAVASHAREDIR The base directory for all shared Java resources.
#
# JAVAJARDIR The directory where a port should install JAR files.
#
# JAVALIBDIR The directory where JAR files installed by other ports
# are located.
#
2004-09-02 13:18:59 +00:00
# HAVE_JIKES Defined and set to "yes" whenever the port will effectively
# use Jikes. See stage 6 header for further detail.
#
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
# Porter's hints
#
# To retrieve the Major version number from JAVA_PORT_VERSION (e.g. "1.3"):
# -> ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/}
2002-04-04 23:01:24 +00:00
#
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
2002-04-04 23:01:24 +00:00
# There are the following stages:
#
# Stage 1: Define constants
2004-04-16 14:53:22 +00:00
# Stage 2: bsd.java.mk 1.0 backward compatibility
# Stage 3: Determine which JDK ports are installed and which JDK ports are
# suitable
# Stage 4: <REMOVED> (merged in stage 3)
2004-04-03 03:37:05 +00:00
# Stage 5: Decide the exact JDK to use (or install)
2004-06-09 18:17:24 +00:00
# Stage 6: Add any dependencies if necessary
# Stage 7: Define all settings for the port to use
2002-04-04 23:01:24 +00:00
#
2002-03-28 11:24:43 +00:00
. i f d e f i n e d ( U S E _ J A V A )
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
2002-03-28 11:24:43 +00:00
# Stage 1: Define constants
#
2002-11-18 13:00:00 +00:00
# System-global directories
2004-09-03 16:25:11 +00:00
# NB: If the value of JAVALIBDIR is altered here it must also be altered
2004-07-12 19:43:47 +00:00
# in java/javavmwrapper/Makefile.
2002-11-18 13:00:00 +00:00
JAVASHAREDIR ?= ${ PREFIX } /share/java
JAVAJARDIR ?= ${ JAVASHAREDIR } /classes
2004-09-02 05:02:58 +00:00
JAVALIBDIR ?= ${ LOCALBASE } /share/java/classes
2002-11-18 13:00:00 +00:00
2004-12-19 02:26:53 +00:00
# Add appropriate substitutions to PLIST_SUB and LIST_SUB
2004-06-29 20:16:37 +00:00
PLIST_SUB += JAVASHAREDIR = " ${ JAVASHAREDIR : S ,^ ${ PREFIX } /,, } " \
2004-12-19 02:26:53 +00:00
JAVAJARDIR = " ${ JAVAJARDIR : S ,^ ${ PREFIX } /,, } "
SUB_LIST += JAVASHAREDIR = " ${ JAVASHAREDIR } " \
JAVAJARDIR = " ${ JAVAJARDIR } " \
JAVALIBDIR = " ${ JAVALIBDIR } "
2005-02-27 23:49:33 +00:00
. i f d e f i n e d ( J A V A _ V E R S I O N )
SUB_LIST += JAVA_VERSION = " ${ JAVA_VERSION } "
. e n d i f
. i f d e f i n e d ( J A V A _ V E N D O R )
SUB_LIST += JAVA_VENDOR = " ${ JAVA_VENDOR } "
. e n d i f
. i f d e f i n e d ( J A V A _ O S )
SUB_LIST += JAVA_OS = " ${ JAVA_OS } "
. e n d i f
2004-06-29 20:16:37 +00:00
2004-04-03 03:37:05 +00:00
# The complete list of Java versions, os and vendors supported.
2005-01-20 08:43:09 +00:00
__JAVA_VERSION_LIST = 1.1 1.2 1.3 1.4 1.5
2004-04-16 14:53:22 +00:00
_JAVA_VERSION_LIST = ${ __JAVA_VERSION_LIST } ${ __JAVA_VERSION_LIST : S / $/+/ }
_JAVA_OS_LIST = native linux
_JAVA_VENDOR_LIST = freebsd bsdjava sun blackdown ibm
2004-04-03 03:37:05 +00:00
# Set all meta-information about JDK ports:
# port location, corresponding JAVA_HOME, JDK version, OS, vendor
2006-04-07 03:32:48 +00:00
_JAVA_PORT_NATIVE_FREEBSD_JDK_1_5_INFO = PORT = java/diablo-jdk15 HOME = ${ LOCALBASE } /diablo-jdk1.5.0 \
VERSION = 1.5.0 OS = native VENDOR = freebsd
2004-04-16 14:53:22 +00:00
_JAVA_PORT_NATIVE_BSDJAVA_JDK_1_1_INFO = PORT = java/jdk11 HOME = ${ LOCALBASE } /jdk1.1.8 \
VERSION = 1.1.8 OS = native VENDOR = bsdjava
_JAVA_PORT_NATIVE_BSDJAVA_JDK_1_2_INFO = PORT = java/jdk12 HOME = ${ LOCALBASE } /jdk1.2.2 \
VERSION = 1.2.2 OS = native VENDOR = bsdjava
_JAVA_PORT_NATIVE_BSDJAVA_JDK_1_3_INFO = PORT = java/jdk13 HOME = ${ LOCALBASE } /jdk1.3.1 \
VERSION = 1.3.1 OS = native VENDOR = bsdjava
_JAVA_PORT_NATIVE_BSDJAVA_JDK_1_4_INFO = PORT = java/jdk14 HOME = ${ LOCALBASE } /jdk1.4.2 \
VERSION = 1.4.2 OS = native VENDOR = bsdjava
2005-01-20 08:43:09 +00:00
_JAVA_PORT_NATIVE_BSDJAVA_JDK_1_5_INFO = PORT = java/jdk15 HOME = ${ LOCALBASE } /jdk1.5.0 \
VERSION = 1.5.0 OS = native VENDOR = bsdjava
2004-04-16 14:53:22 +00:00
_JAVA_PORT_LINUX_BLACKDOWN_JDK_1_2_INFO = PORT = java/linux-blackdown-jdk12 HOME = ${ LOCALBASE } /linux-blackdown-jdk1.2.2 \
VERSION = 1.2.2 OS = linux VENDOR = blackdown
_JAVA_PORT_LINUX_BLACKDOWN_JDK_1_3_INFO = PORT = java/linux-blackdown-jdk13 HOME = ${ LOCALBASE } /linux-blackdown-jdk1.3.1 \
VERSION = 1.3.1 OS = linux VENDOR = blackdown
_JAVA_PORT_LINUX_BLACKDOWN_JDK_1_4_INFO = PORT = java/linux-blackdown-jdk14 HOME = ${ LOCALBASE } /linux-blackdown-jdk1.4.2 \
VERSION = 1.4.2 OS = linux VENDOR = blackdown
_JAVA_PORT_LINUX_IBM_JDK_1_3_INFO = PORT = java/linux-ibm-jdk13 HOME = ${ LOCALBASE } /linux-ibm-jdk1.3.1 \
VERSION = 1.3.1 OS = linux VENDOR = ibm
2004-09-09 20:31:48 +00:00
_JAVA_PORT_LINUX_IBM_JDK_1_4_INFO = PORT = java/linux-ibm-jdk14 HOME = ${ LOCALBASE } /linux-ibm-jdk1.4.2 \
2004-04-16 14:53:22 +00:00
VERSION = 1.4.1 OS = linux VENDOR = ibm
_JAVA_PORT_LINUX_SUN_JDK_1_2_INFO = PORT = java/linux-sun-jdk12 HOME = ${ LOCALBASE } /linux-sun-jdk1.2.2 \
VERSION = 1.2.2 OS = linux VENDOR = sun
_JAVA_PORT_LINUX_SUN_JDK_1_3_INFO = PORT = java/linux-sun-jdk13 HOME = ${ LOCALBASE } /linux-sun-jdk1.3.1 \
VERSION = 1.3.1 OS = linux VENDOR = sun
_JAVA_PORT_LINUX_SUN_JDK_1_4_INFO = PORT = java/linux-sun-jdk14 HOME = ${ LOCALBASE } /linux-sun-jdk1.4.2 \
VERSION = 1.4.2 OS = linux VENDOR = sun
# Verbose description for each VENDOR
2004-04-03 03:37:05 +00:00
_JAVA_VENDOR_freebsd = "FreeBSD Foundation"
2004-04-05 06:50:07 +00:00
_JAVA_VENDOR_bsdjava = "BSD Java Porting Team"
2004-04-03 03:37:05 +00:00
_JAVA_VENDOR_blackdown = Blackdown
_JAVA_VENDOR_ibm = IBM
_JAVA_VENDOR_sun = Sun
2004-04-16 14:53:22 +00:00
# Verbose description for each OS
2004-04-03 03:37:05 +00:00
_JAVA_OS_native = Native
_JAVA_OS_linux = Linux
2002-03-28 11:24:43 +00:00
2004-04-16 14:53:22 +00:00
# Enforce preferred Java ports according to OS
* Add bsd.database.mk [1]
- move out from bsd.port.mk USE_MYSQL and USE_PGSQL.
- add support for Berkley DB and SQLite (via USE_BDB and USE_SQLITE
knobs).
* Espace '+' in make search [2]
* Add "makepatch" target to simplify creation of patches during porting [3]
* Replace deprecated MACHINE_ARCH with ARCH [4]
* Remove support of OpenLDAP 2.1 [5]
* Add bsd.tcl.mk [6]
It introduces USE_TCL/USE_TCL_BUILD knobs to support various
version of tcl (8.0 -> 8.4)
* Fix cosmetic bugs in security-check target [7]
* Add support for INDEX-7 and above (up to INDEX-9 actually) [8]
* Add "package-recursive" to bsd.port.subdir.mk [9]
* Remove check for FreeBSD version < 460101 [10]
* New category: net-im [11]
* Add .desktop file facilities
It introduces DESKTOPDIR and DESKTOP_ENTRIES knobs [12]
* Add SHA256 support to "*checksum" targets [13]
* Fix USE_PYTHON with OPTIONS [14]
* Force NO_LINT to MAKE_ENV to avoid library breaks [15]
* Fix typo: s/RC_ORDER/USE_RCORDER/g [16]
* Add support for PostgreSQL 8.1 [17]
* Add bsd.apache.mk
USE_APACHE knob enhancements [18]
PR: ports/85695 [1], ports/85669 [2], ports/85488 [3],
ports/84489 [4], ports/83835 [5], ports/83718 [6],
ports/83716 [7], ports/83710 [8], ports/82753 [9],
ports/82138 [10], ports/81206 [11], ports/79509 [12],
ports/79123 [13], ports/74866 [14], ports/85490 [15],
ports/83514 [16], ports/88466 [17]
Submitted by: vsevolod [1] [6], Ricardo Alves dos Reis
<ricardo_bsd@yahoo.com.br> [2], markm [3] [15], obrien [4],
krion [5] [8] , Petr Rehor <prehor@gmail.com> [7],
clement [8] [18], jhs@berklix.org [9], edwin [10] [13],
pav [11], jylefort [12], mnag [14], leeym [16], girgen [17]
2005-11-08 09:02:51 +00:00
. i f ${ARCH} = = "amd64"
2005-10-04 15:55:45 +00:00
_JAVA_PREFERRED_PORTS += JAVA_PORT_NATIVE_BSDJAVA_JDK_1_5
2006-04-07 03:32:48 +00:00
. e l i f $ { O S V E R S I O N } > = 5 0 0 0 0 0
_JAVA_PREFERRED_PORTS += JAVA_PORT_NATIVE_FREEBSD_JDK_1_5
2004-04-16 14:53:22 +00:00
. e l s e
2006-04-07 03:32:48 +00:00
_JAVA_PREFERRED_PORTS += JAVA_PORT_NATIVE_BSDJAVA_JDK_1_5
2004-04-16 14:53:22 +00:00
. e n d i f
# List all JDK ports
2006-04-07 03:32:48 +00:00
__JAVA_PORTS_ALL = JAVA_PORT_NATIVE_FREEBSD_JDK_1_5 \
JAVA_PORT_NATIVE_BSDJAVA_JDK_1_5 \
2005-01-20 08:43:09 +00:00
JAVA_PORT_NATIVE_BSDJAVA_JDK_1_4 \
2004-04-16 14:53:22 +00:00
JAVA_PORT_NATIVE_BSDJAVA_JDK_1_3 \
JAVA_PORT_NATIVE_BSDJAVA_JDK_1_2 \
JAVA_PORT_NATIVE_BSDJAVA_JDK_1_1 \
JAVA_PORT_LINUX_SUN_JDK_1_4 \
JAVA_PORT_LINUX_SUN_JDK_1_3 \
JAVA_PORT_LINUX_SUN_JDK_1_2 \
JAVA_PORT_LINUX_BLACKDOWN_JDK_1_4 \
JAVA_PORT_LINUX_BLACKDOWN_JDK_1_3 \
JAVA_PORT_LINUX_BLACKDOWN_JDK_1_2 \
JAVA_PORT_LINUX_IBM_JDK_1_4 \
JAVA_PORT_LINUX_IBM_JDK_1_3
_JAVA_PORTS_ALL = ${ JAVA_PREFERRED_PORTS } \
${ _JAVA_PREFERRED_PORTS } \
${ __JAVA_PORTS_ALL }
2002-03-28 11:24:43 +00:00
# Set the name of the file that indicates that a JDK is indeed installed, as a
# relative path within the JAVA_HOME directory.
2002-04-04 23:01:24 +00:00
_JDK_FILE = bin/javac
2002-03-28 11:24:43 +00:00
# Set the path to Jikes and define the Jikes dependency
_JIKES_PATH = ${ LOCALBASE } /bin/jikes
2004-04-16 14:53:22 +00:00
DEPEND_JIKES = ${ _JIKES_PATH } :${ PORTSDIR } /java/jikes
2002-05-02 12:46:56 +00:00
2004-04-03 03:37:05 +00:00
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
# Stage 2: bsd.java.mk 1.0 backward compatibility
2002-03-28 11:24:43 +00:00
#
2004-04-03 03:37:05 +00:00
# First detect if we are using bsd.java.mk v1.0
2004-04-16 14:53:22 +00:00
_USE_BSD_JAVA_MK_1_0 != ${ ECHO_CMD } " ${ _JAVA_VERSION_LIST } " \
2004-04-05 21:24:25 +00:00
| ${ TR } " " "\n" \
| ${ GREP } -q " ^ ${ USE_JAVA } $$ " && ${ ECHO_CMD } "yes" || ${ ECHO_CMD } "no"
2004-04-16 14:53:22 +00:00
. i f (${_USE_BSD_JAVA_MK_1_0} = = "yes" )
2004-04-03 03:37:05 +00:00
# Then affect the variables so that we may use v2.0
2004-04-16 14:53:22 +00:00
# USE_JAVA --> JAVA_VERSION
. i f ! d e f i n e d ( J A V A _ V E R S I O N )
2004-04-03 03:37:05 +00:00
JAVA_VERSION = ${ USE_JAVA }
2004-04-16 14:53:22 +00:00
. e l s e
2004-07-01 22:44:00 +00:00
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: The port is using bsd.java.mk 1.0 but sets a value for JAVA_VERSION. This may cause problems. "
2004-04-16 14:53:22 +00:00
@${ FALSE }
2004-04-03 03:37:05 +00:00
. e n d i f
2004-04-16 14:53:22 +00:00
# NO_{BUILD|RUN}_DEPENDS_JAVA --> JAVA_{BUILD|RUN}
. i f d e f i n e d ( N O _ B U I L D _ D E P E N D S _ J A V A ) & & d e f i n e d ( N O _ R U N _ D E P E N D S _ J A V A )
2004-07-01 22:44:00 +00:00
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: NO_BUILD_DEPENDS_JAVA and NO_RUN_DEPENDS_JAVA cannot be set at the same time. " ;
2004-04-16 14:53:22 +00:00
@${ FALSE }
. e l s e
. i f ! d e f i n e d ( N O _ B U I L D _ D E P E N D S _ J A V A ) & & ! d e f i n e d ( N O _ B U I L D )
JAVA_BUILD = jdk
. e n d i f
. i f ! d e f i n e d ( N O _ R U N _ D E P E N D S _ J A V A )
JAVA_RUN = jdk
. e n d i f
2004-04-03 03:37:05 +00:00
. e n d i f
2004-04-16 14:53:22 +00:00
# NEED_JAVAC --> JAVA_{BUILD|RUN}={jdk|jre}
. i f d e f i n e d ( N E E D _ J A V A C )
2004-09-02 13:18:59 +00:00
. if (${NEED_JAVAC : U } == "YES ")
2004-04-16 14:53:22 +00:00
JAVA_BUILD = jdk
2004-09-02 13:18:59 +00:00
. elif (${NEED_JAVAC : U } == "NO ")
2004-04-16 14:53:22 +00:00
JAVA_BUILD = jre
. e l s e
2004-07-01 22:44:00 +00:00
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: \" ${ NEED_JAVAC } \" is not a valid value for NEED_JAVAC. It should be YES or NO, or it should be undefined. " ;
2004-04-03 03:37:05 +00:00
@${ FALSE }
2004-04-16 14:53:22 +00:00
. e n d i f
2004-04-03 03:37:05 +00:00
. e n d i f
2002-03-28 11:24:43 +00:00
. e n d i f
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
# Stage 3: Determine which JDK ports are suitable and which JDK ports are
# suitable
#
# From here, the port is using bsd.java.mk v2.0
2004-11-07 00:51:53 +00:00
# Error checking: defined JAVA_{HOME,PORT,PORT_VERSION,PORT_VENDOR,PORT_OS}
. f o r v a r i a b l e i n J A V A _ H O M E J A V A _ P O R T J A V A _ P O R T _ V E R S I O N J A V A _ P O R T _ V E N D O R J A V A _ P O R T _ O S
. i f d e f i n e d ( $ { v a r i a b l e } )
check-makevars ::
2005-02-10 01:44:14 +00:00
@${ ECHO_CMD } " ${ PKGNAME } : Environment error: \" ${ variable } \" should not be defined. "
2004-11-07 00:51:53 +00:00
@${ FALSE }
. e n d i f
. e n d f o r
2004-04-16 14:53:22 +00:00
# Error checking: JAVA_VERSION
_JAVA_VERSION_LIST_REGEXP != ${ ECHO_CMD } " ${ _JAVA_VERSION_LIST } " | ${ SED } "s/ /\\\|/g"
_ERROR_CHECKING_JAVA_VERSION != ${ ECHO_CMD } " ${ JAVA_VERSION } " | ${ TR } " " "\n" \
| ${ GREP } -v " ${ _JAVA_VERSION_LIST_REGEXP } " || true
. i f (${_ERROR_CHECKING_JAVA_VERSION} != "" )
2004-07-01 22:44:00 +00:00
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: \" ${ JAVA_VERSION } \" is not a valid value for JAVA_VERSION. It should be one or more of: ${ __JAVA_VERSION_LIST } (with an optional \"+\" suffix.) " ;
2004-04-03 03:37:05 +00:00
@${ FALSE }
. e n d i f
2004-04-16 14:53:22 +00:00
# Error checking: JAVA_VENDOR
_JAVA_VENDOR_LIST_REGEXP != ${ ECHO_CMD } " ${ _JAVA_VENDOR_LIST } " | ${ SED } "s/ /\\\|/g"
_ERROR_CHECKING_JAVA_VENDOR != ${ ECHO_CMD } " ${ JAVA_VENDOR } " | ${ TR } " " "\n" \
| ${ GREP } -v " ${ _JAVA_VENDOR_LIST_REGEXP } " || true
. i f (${_ERROR_CHECKING_JAVA_VENDOR} != "" )
2004-07-01 22:44:00 +00:00
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: \" ${ JAVA_VENDOR } \" is not a valid value for JAVA_VENDOR. It should be one or more of: ${ _JAVA_VENDOR_LIST } " ;
2002-03-28 11:24:43 +00:00
@${ FALSE }
. e n d i f
2004-04-16 14:53:22 +00:00
# Error checking: JAVA_OS
_JAVA_OS_LIST_REGEXP != ${ ECHO_CMD } " ${ _JAVA_OS_LIST } " | ${ SED } "s/ /\\\|/g"
_ERROR_CHECKING_JAVA_OS != ${ ECHO_CMD } " ${ JAVA_OS } " | ${ TR } " " "\n" \
| ${ GREP } -v " ${ _JAVA_OS_LIST_REGEXP } " || true
. i f (${_ERROR_CHECKING_JAVA_OS} != "" )
2004-07-01 22:44:00 +00:00
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: \" ${ JAVA_OS } \" is not a valid value for JAVA_OS. It should be one or more of: ${ _JAVA_OS_LIST } " ;
2004-04-16 14:53:22 +00:00
@${ FALSE }
. e n d i f
2004-04-03 03:37:05 +00:00
2004-11-29 17:33:41 +00:00
# Set default values for JAVA_BUILD and JAVA_RUN
# When nothing is set, assume JAVA_BUILD=jdk and JAVA_RUN=jre
# (unless NO_BUILD is set)
. i f ! d e f i n e d ( J A V A _ E X T R A C T ) & & ! d e f i n e d ( J A V A _ B U I L D ) & & ! d e f i n e d ( J A V A _ R U N )
. i f ! d e f i n e d ( N O _ B U I L D )
JAVA_BUILD = jdk
. e n d i f
JAVA_RUN = jre
. e n d i f
2004-04-16 14:53:22 +00:00
# JDK dependency setting
. u n d e f _ J A V A _ P O R T S _ I N S T A L L E D
. u n d e f _ J A V A _ P O R T S _ P O S S I B L E
. i f d e f i n e d ( J A V A _ V E R S I O N )
2005-01-20 08:43:09 +00:00
_JAVA_VERSION = ${ JAVA_VERSION : S /1.1+/1.1 1.2 1.3 1.4 1.5/ : S /1.2+/1.2 1.3 1.4 1.5/ : S /1.3+/1.3 1.4 1.5/ : S /1.4+/1.4 1.5/ : S /1.5+/1.5/ }
2004-04-16 14:53:22 +00:00
. e l s e
_JAVA_VERSION = ${ __JAVA_VERSION_LIST }
. e n d i f
. i f d e f i n e d ( J A V A _ O S )
_JAVA_OS = ${ JAVA_OS }
. e l s e
_JAVA_OS = ${ _JAVA_OS_LIST }
. e n d i f
. i f d e f i n e d ( J A V A _ V E N D O R )
_JAVA_VENDOR = ${ JAVA_VENDOR }
. e l s e
_JAVA_VENDOR = ${ _JAVA_VENDOR_LIST }
. e n d i f
2004-04-03 03:37:05 +00:00
2004-04-16 14:53:22 +00:00
. f o r A _ J A V A _ P O R T i n $ { _ J A V A _ P O R T S _ A L L }
A_JAVA_PORT_INFO := ${ A_JAVA_PORT : S /^/ \$ {_/ : S / $/_INFO } /}
A_JAVA_PORT_HOME = ${ A_JAVA_PORT_INFO : MHOME =* : S ,HOME=,, }
A_JAVA_PORT_VERSION = ${ A_JAVA_PORT_INFO : MVERSION =* : C /VERSION=([0-9]) \. ([0-9])(.*)/ \1 . \2 / }
A_JAVA_PORT_OS = ${ A_JAVA_PORT_INFO : MOS =* : S ,OS=,, }
A_JAVA_PORT_VENDOR = ${ A_JAVA_PORT_INFO : MVENDOR =* : S ,VENDOR=,, }
A_JAVA_PORT_INSTALLED != ${ TEST } -x " ${ A_JAVA_PORT_HOME } / ${ _JDK_FILE } " \
&& ${ ECHO_CMD } " ${ A_JAVA_PORT } " \
|| ${ TRUE }
__JAVA_PORTS_INSTALLED != ${ ECHO_CMD } " ${ __JAVA_PORTS_INSTALLED } ${ A_JAVA_PORT_INSTALLED } "
A_JAVA_PORT_POSSIBLE != ${ ECHO_CMD } " ${ _JAVA_VERSION } " | ${ GREP } -q " ${ A_JAVA_PORT_VERSION } " \
&& ${ ECHO_CMD } " ${ _JAVA_OS } " | ${ GREP } -q " ${ A_JAVA_PORT_OS } " \
&& ${ ECHO_CMD } " ${ _JAVA_VENDOR } " | ${ GREP } -q " ${ A_JAVA_PORT_VENDOR } " \
&& ${ ECHO_CMD } " ${ A_JAVA_PORT } " \
|| ${ TRUE }
__JAVA_PORTS_POSSIBLE != ${ ECHO_CMD } " ${ __JAVA_PORTS_POSSIBLE } ${ A_JAVA_PORT_POSSIBLE } "
. e n d f o r
_JAVA_PORTS_INSTALLED = ${ __JAVA_PORTS_INSTALLED : C / [ ]+/ /g }
_JAVA_PORTS_POSSIBLE = ${ __JAVA_PORTS_POSSIBLE : C / [ ]+/ /g }
#-------------------------------------------------------------------------------
2004-04-03 03:37:05 +00:00
# Stage 5: Decide the exact JDK to use (or install)
#
# Find an installed JDK port that matches the requirements of the port
2004-04-16 14:53:22 +00:00
. u n d e f _ J A V A _ P O R T S _ I N S T A L L E D _ P O S S I B L E
. f o r A _ J A V A _ P O R T i n $ { _ J A V A _ P O R T S _ P O S S I B L E }
A_JAVA_PORT_INSTALLED_POSSIBLE != ${ ECHO_CMD } " ${ _JAVA_PORTS_INSTALLED } " | ${ GREP } -q " ${ A_JAVA_PORT } " \
&& ${ ECHO_CMD } " ${ A_JAVA_PORT } " || ${ TRUE }
__JAVA_PORTS_INSTALLED_POSSIBLE != ${ ECHO_CMD } " ${ __JAVA_PORTS_INSTALLED_POSSIBLE } ${ A_JAVA_PORT_INSTALLED_POSSIBLE } "
. e n d f o r
_JAVA_PORTS_INSTALLED_POSSIBLE = ${ __JAVA_PORTS_INSTALLED_POSSIBLE : C / [ ]+/ /g }
2004-04-03 03:37:05 +00:00
. i f ${_JAVA_PORTS_INSTALLED_POSSIBLE} != ""
2004-04-05 21:24:25 +00:00
_JAVA_PORT != ${ ECHO_CMD } " ${ _JAVA_PORTS_INSTALLED_POSSIBLE } " \
| ${ AWK } '{ print $$1 }'
2004-04-03 03:37:05 +00:00
# If no installed JDK port fits, then pick one from the list of possible ones
. e l s e
2004-04-05 21:24:25 +00:00
_JAVA_PORT != ${ ECHO_CMD } " ${ _JAVA_PORTS_POSSIBLE } " \
| ${ AWK } '{ print $$1 }'
2004-04-03 03:37:05 +00:00
. e n d i f
2004-04-16 14:53:22 +00:00
_JAVA_PORT_INFO := ${ _JAVA_PORT : S /^/ \$ {_/ : S / $/_INFO } /}
JAVA_PORT = ${ _JAVA_PORT_INFO : MPORT =* : S ,PORT=,, }
JAVA_HOME = ${ _JAVA_PORT_INFO : MHOME =* : S ,HOME=,, }
JAVA_PORT_VERSION = ${ _JAVA_PORT_INFO : MVERSION =* : S ,VERSION=,, }
JAVA_PORT_OS = ${ _JAVA_PORT_INFO : MOS =* : S ,OS=,, }
JAVA_PORT_VENDOR = ${ _JAVA_PORT_INFO : MVENDOR =* : S ,VENDOR=,, }
2004-04-03 03:37:05 +00:00
JAVA_PORT_VENDOR_DESCRIPTION := ${ JAVA_PORT_VENDOR : S /^/ \$ {_JAVA_VENDOR_/ : S / $/ } /}
JAVA_PORT_OS_DESCRIPTION := ${ JAVA_PORT_OS : S /^/ \$ {_JAVA_OS_/ : S / $/ } /}
2004-06-09 18:17:24 +00:00
#-------------------------------------------------------------------------------
# Stage 6: Add any dependencies if necessary
#
2004-09-02 13:18:59 +00:00
# Jikes support: If USE_JIKES is set to YES, then use Jikes. If USE_JIKES is
# set to NO, then don't use it. If it is set to a different value, then fail
# with an error message. Otherwise USE_JIKES is not set, in which case it is
# checked if Jikes is already installed. If it is, then it will be used,
# otherwise it will not be used.
#
# As a result, HAVE_JIKES is defined and set to "yes" when Jikes is used by the
# port according to the above policy.
. u n d e f H A V E _ J I K E S
2005-11-03 17:37:49 +00:00
# Enforce USE_JIKES=NO if not defined and using Java 1.5
# XXX: This is a temporary fix to be removed when Jikes supports Java 1.5
. if ${JAVA_PORT_VERSION : C /^([0-9])\.([0-9])(.*)$/\1.\2/} == "1.5"
USE_JIKES ?= NO
. e n d i f
2004-09-02 13:18:59 +00:00
# First test if USE_JIKES has a valid value
. if defined(USE_JIKES) && !(${USE_JIKES : U } == "YES ") && !(${USE_JIKES :U } == "NO ")
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: \" ${ USE_JIKES } \" is not a valid value for USE_JIKES. It should be YES or NO, or it should be undefined. " ;
@${ FALSE }
. e n d i f
# Then test if jikes is needed or available: -> HAVE_JIKES=yes
. if (exists(${_JIKES_PATH}) && (!defined(USE_JIKES) || (${USE_JIKES : U } == "YES "))) \
|| ( defined( USE_JIKES) && ( ${ USE_JIKES : U } = = "YES" ) )
HAVE_JIKES = yes
. e n d i f
# Add jikes port to the dependencies if needed
. i f ! d e f i n e d ( N O _ B U I L D ) & & d e f i n e d ( H A V E _ J I K E S )
BUILD_DEPENDS += ${ DEPEND_JIKES }
. e n d i f
2004-08-02 21:44:17 +00:00
# Ant Support: USE_ANT --> JAVA_BUILD=jdk
. i f d e f i n e d ( U S E _ A N T )
JAVA_BUILD = jdk
. e n d i f
2004-06-09 18:17:24 +00:00
# Add the JDK port to the dependencies
DEPEND_JAVA = ${ JAVA } :${ PORTSDIR } /${ JAVA_PORT }
. i f d e f i n e d ( J A V A _ E X T R A C T )
EXTRACT_DEPENDS += ${ DEPEND_JAVA }
2004-07-27 05:16:34 +00:00
. e n d i f
2004-06-09 18:17:24 +00:00
. i f d e f i n e d ( J A V A _ B U I L D )
. i f d e f i n e d ( N O _ B U I L D )
2004-07-01 22:44:00 +00:00
check-makevars ::
@${ ECHO_CMD } " ${ PKGNAME } : Makefile error: JAVA_BUILD and NO_BUILD cannot be set at the same time. " ;
2004-06-09 18:17:24 +00:00
@${ FALSE }
. e n d i f
2004-07-27 05:16:34 +00:00
BUILD_DEPENDS += ${ DEPEND_JAVA }
. e n d i f
2004-06-09 18:17:24 +00:00
. i f d e f i n e d ( J A V A _ R U N )
RUN_DEPENDS += ${ DEPEND_JAVA }
. e n d i f
2004-08-02 21:44:17 +00:00
# Ant support: default do-build target
. i f d e f i n e d ( U S E _ A N T )
ANT ?= ${ LOCALBASE } /bin/ant
MAKE_ENV += JAVA_HOME = ${ JAVA_HOME }
2004-11-09 02:11:42 +00:00
. i f d e f i n e d ( H A V E _ J I K E S )
MAKE_ARGS += -Dbuild.compiler= jikes
. e n d i f
2004-08-02 21:44:17 +00:00
BUILD_DEPENDS += ${ ANT } :${ PORTSDIR } /devel/apache-ant
ALL_TARGET ?=
. i f ! t a r g e t ( d o - b u i l d )
do-build :
@( cd ${ BUILD_WRKSRC } ; \
${ SETENV } ${ MAKE_ENV } ${ ANT } ${ MAKE_ARGS } ${ ALL_TARGET } )
. e n d i f
. e n d i f
2004-06-09 18:17:24 +00:00
2002-03-28 11:24:43 +00:00
#-----------------------------------------------------------------------------
2004-06-09 18:17:24 +00:00
# Stage 7: Define all settings for the port to use
2004-04-16 14:53:22 +00:00
#
2002-04-26 22:30:47 +00:00
# At this stage both JAVA_HOME and JAVA_PORT are definitely given a value.
2004-04-16 14:53:22 +00:00
#
2004-09-02 13:18:59 +00:00
# Define the location of the Java compiler. If HAVE_JIKES is defined, then
# use Jikes.
2002-04-26 22:30:47 +00:00
2004-04-16 14:53:22 +00:00
# Only define JAVAC if a JDK is needed or USE_JIKES=yes
2002-03-28 11:24:43 +00:00
. u n d e f J A V A C
2002-04-26 22:30:47 +00:00
2004-04-16 14:53:22 +00:00
# Then test if a JAVAC has to be set (JAVA_BUILD==jdk)
. i f d e f i n e d ( J A V A _ B U I L D )
2004-09-02 13:18:59 +00:00
. if (${JAVA_BUILD : U } == "JDK ") && !defined (JAVAC )
# Use jikes if available and not explicitly forbidden (see Stage 6)
. i f d e f i n e d ( H A V E _ J I K E S )
2004-06-29 20:16:37 +00:00
JAVAC ?= ${ _JIKES_PATH } -bootclasspath ${ JAVA_CLASSES }
2004-04-16 14:53:22 +00:00
# Otherwise use 'javac'
. e l s e
2004-06-29 20:16:37 +00:00
JAVAC ?= ${ JAVA_HOME } /bin/javac
2004-04-16 14:53:22 +00:00
. e n d i f
2002-04-26 22:30:47 +00:00
. e n d i f
2002-03-28 11:24:43 +00:00
. e n d i f
# Define the location of some more executables.
2004-06-29 20:16:37 +00:00
APPLETVIEWER ?= ${ JAVA_HOME } /bin/appletviewer
JAR ?= ${ JAVA_HOME } /bin/jar
JAVA ?= ${ JAVA_HOME } /bin/java
JAVADOC ?= ${ JAVA_HOME } /bin/javadoc
JAVAH ?= ${ JAVA_HOME } /bin/javah
JAVAP ?= ${ JAVA_HOME } /bin/javap
JAVA_N2A ?= ${ JAVA_HOME } /bin/native2ascii
JAVA_SERIALVER ?= ${ JAVA_HOME } /bin/serialver
RMIC ?= ${ JAVA_HOME } /bin/rmic
RMIREGISTRY ?= ${ JAVA_HOME } /bin/rmiregistry
2002-03-28 11:24:43 +00:00
# Some executables only exists in JDK 1.2 and up
2004-04-16 14:53:22 +00:00
. i f ${_JAVA_PORT} != "JAVA_PORT_NATIVE_BSDJAVA_JDK_1_1"
2004-06-29 20:16:37 +00:00
JAVA_KEYTOOL ?= ${ JAVA_HOME } /bin/keytool
JAVA_POLICYTOOL ?= ${ JAVA_HOME } /bin/policytool
RMID ?= ${ JAVA_HOME } /bin/rmid
2002-03-28 11:24:43 +00:00
. e n d i f
# Set the location of the ZIP or JAR file with all standard Java classes.
2004-04-16 14:53:22 +00:00
. i f ${_JAVA_PORT} = = "JAVA_PORT_NATIVE_BSDJAVA_JDK_1_1"
2002-03-28 11:24:43 +00:00
JAVA_CLASSES = ${ JAVA_HOME } /lib/classes.zip
. e l s e
JAVA_CLASSES = ${ JAVA_HOME } /jre/lib/rt.jar
. e n d i f
2002-04-04 23:01:24 +00:00
2004-04-16 14:53:22 +00:00
#-------------------------------------------------------------------------------
# Additional Java support
# Debug target
# Use it to check Java dependency while porting
java-debug :
@${ ECHO_CMD } " _USE_BSD_JAVA_MK_1_0= ${ _USE_BSD_JAVA_MK_1_0 } "
@${ ECHO_CMD }
@${ ECHO_CMD } "# User specified parameters:"
@${ ECHO_CMD } " JAVA_VERSION= ${ JAVA_VERSION } ( ${ _JAVA_VERSION } ) "
@${ ECHO_CMD } " JAVA_OS= ${ JAVA_OS } ( ${ _JAVA_OS } ) "
@${ ECHO_CMD } " JAVA_VENDOR= ${ JAVA_VENDOR } ( ${ _JAVA_VENDOR } ) "
@${ ECHO_CMD } " JAVA_BUILD= ${ JAVA_BUILD } "
@${ ECHO_CMD } " JAVA_RUN= ${ JAVA_RUN } "
@${ ECHO_CMD } " JAVA_EXTRACT= ${ JAVA_EXTRACT } "
@${ ECHO_CMD }
@${ ECHO_CMD } "# JDK port dependency selection process:"
@${ ECHO_CMD } " _JAVA_PORTS_POSSIBLE= ${ _JAVA_PORTS_POSSIBLE } "
@${ ECHO_CMD } " _JAVA_PORTS_INSTALLED= ${ _JAVA_PORTS_INSTALLED } "
@${ ECHO_CMD } " _JAVA_PORTS_INSTALLED_POSSIBLE= ${ _JAVA_PORTS_INSTALLED_POSSIBLE } "
@${ ECHO_CMD } " _JAVA_PORT= ${ _JAVA_PORT } "
@${ ECHO_CMD } " _JAVA_PORT_INFO= ${ _JAVA_PORT_INFO : S / \t / / } "
@${ ECHO_CMD }
@${ ECHO_CMD } "# Selected JDK port:"
@${ ECHO_CMD } " JAVA_PORT= ${ JAVA_PORT } "
@${ ECHO_CMD } " JAVA_HOME= ${ JAVA_HOME } "
@${ ECHO_CMD } " JAVA_PORT_VERSION= ${ JAVA_PORT_VERSION } "
@${ ECHO_CMD } " JAVA_PORT_OS= ${ JAVA_PORT_OS } ( ${ JAVA_PORT_OS_DESCRIPTION } ) "
@${ ECHO_CMD } " JAVA_PORT_VENDOR= ${ JAVA_PORT_VENDOR } ( ${ JAVA_PORT_VENDOR_DESCRIPTION } ) "
@${ ECHO_CMD }
@${ ECHO_CMD } "# Additional variables:"
@${ ECHO_CMD } " JAVAC= ${ JAVAC } "
@${ ECHO_CMD } " JAVA_CLASSES= ${ JAVA_CLASSES } "
2002-03-28 11:24:43 +00:00
. e n d i f
. e n d i f