Add lang/perl5 early, but not specifically as part of BULK_PREREQ, so that
[pkgsrc.git] / mk / java-env.mk
1 # $NetBSD: java-env.mk,v 1.5 2005/03/19 16:46:45 jmmv Exp $
2 #
3 # This Makefile fragment handles Java wrappers and is meant to be included
4 # by packages that provide a Java build-time and/or run-time environment.
5 #
6 # The following variables can be defined in package Makefiles to tune the
7 # behavior of this file:
8 #
9 #       JAVA_CLASSPATH  Classpath that will be prepended on all invocations
10 #                       to this implementation.  Optional.
11 #
12 #       JAVA_HOME       Path to the directory holding the Java implementation.
13 #                       Required.
14 #
15 #       JAVA_NAME       Base name of the Java implementation.  This will be
16 #                       used as part of wrappers' names.  Required.
17 #
18 #       JAVA_UNLIMIT    List of resources to be unlimited at runtime.
19 #                       Can include any of cmdsize, datasize and stacksize.
20 #                       Optional.
21 #
22 #       JAVA_WRAPPERS   List of wrappers to be created under ${PREFIX}/bin,
23 #                       pointing to binaries under ${JAVA_HOME}/bin.  The
24 #                       names must match files in the later directory.
25 #                       Required (if empty, the inclusion of this file is
26 #                       useless).
27 #
28
29 .if !defined(JAVA_ENV_MK)
30 JAVA_ENV_MK=            # defined
31
32 JAVA_NAME?=             # undefined
33 JAVA_HOME?=             # undefined
34 JAVA_CLASSPATH?=        # empty
35 JAVA_UNLIMIT?=          # empty
36 JAVA_WRAPPERS?=         # empty
37
38 .if !empty(JAVA_WRAPPERS)
39 INSTALLATION_DIRS+=     bin
40
41 ALTERNATIVES_SRC=       ${WRKDIR}/.ALTERNATIVES
42 ${WRKDIR}/.ALTERNATIVES:
43 .  for w in ${JAVA_WRAPPERS}
44         @${ECHO} 'bin/${w} ${PREFIX}/bin/${JAVA_NAME}-${w}' \
45                 >>${WRKDIR}/.ALTERNATIVES
46 .  endfor
47
48 .  for w in ${JAVA_WRAPPERS}
49
50 JAVA_WRAPPER_BIN.${w}?= ${JAVA_HOME}/bin/${w}
51
52 post-build:             ${WRKDIR}/${w}
53
54 .PHONY:                 install-java-wrapper-${w}
55 post-install:           install-java-wrapper-${w}
56
57 .    if !target(${WRKDIR}/${w})
58 ${WRKDIR}/${w}:
59         @${ECHO} 'Generating ${w} wrapper...'
60         @${ECHO} '#! ${SH}' >${WRKDIR}/${w}
61         @${ECHO} 'PATH=${JAVA_HOME}/bin:$${PATH}; export PATH' >>${WRKDIR}/${w}
62         @${ECHO} 'JAVA_HOME=${JAVA_HOME}; export JAVA_HOME' >>${WRKDIR}/${w}
63         @${ECHO} 'JVM_HOME=${JAVA_HOME}; export JVM_HOME' >>${WRKDIR}/${w}
64 .      if !empty(JAVA_CLASSPATH)
65         @${ECHO} 'CLASSPATH=${JAVA_CLASSPATH}:$${CLASSPATH}; export CLASSPATH' \
66                 >>${WRKDIR}/${w}
67 .      endif
68 .      for f in ${JAVA_UNLIMIT}
69         @${ECHO} '${ULIMIT_CMD_${f}}' >>${WRKDIR}/${w}
70 .      endfor
71 .      undef f
72         @${ECHO} '${JAVA_WRAPPER_BIN.${w}} "$$@"' >>${WRKDIR}/${w}
73 .    endif
74
75 install-java-wrapper-${w}:
76         ${INSTALL_SCRIPT} ${WRKDIR}/${w} ${PREFIX}/bin/${JAVA_NAME}-${w}
77
78 .  endfor
79 .  undef w
80 .endif
81
82 # Handle the ${PREFIX}/java shared directory automatically.
83 USE_PKGINSTALL=         YES
84 REQD_DIRS+=             ${PREFIX}/java
85 PRINT_PLIST_AWK+=       /^@dirrm java$$/ { next; }
86
87 .endif  # JAVA_ENV_MK