xref: /dflybsd-src/contrib/bmake/mk/java.mk (revision 5f1e34d9df77f5c410591d2bc3da08302e0e3fa4)
1*5f1e34d9SAlexandre Perrin#
2*5f1e34d9SAlexandre Perrin# RCSid:
3*5f1e34d9SAlexandre Perrin#	$Id: java.mk,v 1.14 2007/11/22 08:16:25 sjg Exp $
4*5f1e34d9SAlexandre Perrin
5*5f1e34d9SAlexandre Perrin#	@(#) Copyright (c) 1998-2001, Simon J. Gerraty
6*5f1e34d9SAlexandre Perrin#
7*5f1e34d9SAlexandre Perrin#	This file is provided in the hope that it will
8*5f1e34d9SAlexandre Perrin#	be of use.  There is absolutely NO WARRANTY.
9*5f1e34d9SAlexandre Perrin#	Permission to copy, redistribute or otherwise
10*5f1e34d9SAlexandre Perrin#	use this file is hereby granted provided that
11*5f1e34d9SAlexandre Perrin#	the above copyright notice and this notice are
12*5f1e34d9SAlexandre Perrin#	left intact.
13*5f1e34d9SAlexandre Perrin#
14*5f1e34d9SAlexandre Perrin#	Please send copies of changes and bug-fixes to:
15*5f1e34d9SAlexandre Perrin#	sjg@crufty.net
16*5f1e34d9SAlexandre Perrin#
17*5f1e34d9SAlexandre Perrin
18*5f1e34d9SAlexandre Perrin.if !target(__${.PARSEFILE}__)
19*5f1e34d9SAlexandre Perrin__${.PARSEFILE}__:
20*5f1e34d9SAlexandre Perrin
21*5f1e34d9SAlexandre Perrin.include <init.mk>
22*5f1e34d9SAlexandre Perrin
23*5f1e34d9SAlexandre PerrinCLASSPATH?=.
24*5f1e34d9SAlexandre Perrin
25*5f1e34d9SAlexandre Perrin.if defined(PROG)
26*5f1e34d9SAlexandre PerrinSRCS?=	${PROG:.class=.java}
27*5f1e34d9SAlexandre Perrin.endif
28*5f1e34d9SAlexandre Perrin.if !defined(SRCS) || empty(SRCS)
29*5f1e34d9SAlexandre PerrinSRCS!=cd ${.CURDIR} && echo *.java
30*5f1e34d9SAlexandre Perrin.endif
31*5f1e34d9SAlexandre Perrin.SUFFIXES:	.class .java
32*5f1e34d9SAlexandre Perrin
33*5f1e34d9SAlexandre PerrinCLEANFILES+= *.class
34*5f1e34d9SAlexandre Perrin
35*5f1e34d9SAlexandre PerrinJAVAC?=   javac
36*5f1e34d9SAlexandre PerrinJAVADOC?= javadoc
37*5f1e34d9SAlexandre Perrin
38*5f1e34d9SAlexandre Perrin.if !target(docs)
39*5f1e34d9SAlexandre Perrindocs:
40*5f1e34d9SAlexandre Perrin	${JAVADOC} ${JAVADOC_FLAGS} ${SRCS}
41*5f1e34d9SAlexandre Perrin.endif
42*5f1e34d9SAlexandre Perrin
43*5f1e34d9SAlexandre Perrin.if defined(JAVADESTDIR) && !empty(JAVADESTDIR)
44*5f1e34d9SAlexandre PerrinJAVASRCDIR?=${JAVADESTDIR:H}/src
45*5f1e34d9SAlexandre Perrin__classdest:=${JAVADESTDIR}${.CURDIR:S,${JAVASRCDIR},,}/
46*5f1e34d9SAlexandre PerrinCLASSPATH:=${CLASSPATH}:${JAVADESTDIR}
47*5f1e34d9SAlexandre PerrinJAVAC_FLAGS+= -d ${JAVADESTDIR}
48*5f1e34d9SAlexandre Perrin.else
49*5f1e34d9SAlexandre Perrin__classdest=
50*5f1e34d9SAlexandre Perrin.endif
51*5f1e34d9SAlexandre Perrin
52*5f1e34d9SAlexandre PerrinJAVAC_FLAGS+= ${JAVAC_DBG}
53*5f1e34d9SAlexandre Perrin
54*5f1e34d9SAlexandre Perrin.if defined(MAKE_VERSION) && !defined(NO_CLASSES_COOKIE)
55*5f1e34d9SAlexandre Perrin# java works best by compiling a bunch of classes at once.
56*5f1e34d9SAlexandre Perrin# this lot does that but needs a recent netbsd make or
57*5f1e34d9SAlexandre Perrin# or its portable cousin bmake.
58*5f1e34d9SAlexandre Perrin.for __s in ${SRCS}
59*5f1e34d9SAlexandre Perrin__c:= ${__classdest}${__s:.java=.class}
60*5f1e34d9SAlexandre Perrin.if !target(${__c})
61*5f1e34d9SAlexandre Perrin# We need to do something to force __c's parent to be made.
62*5f1e34d9SAlexandre Perrin${__c}:	${__s}
63*5f1e34d9SAlexandre Perrin	@rm -f ${.TARGET}
64*5f1e34d9SAlexandre Perrin.endif
65*5f1e34d9SAlexandre PerrinSRCS_${__c}=${__s}
66*5f1e34d9SAlexandre Perrin__classes:= ${__classes} ${__c}
67*5f1e34d9SAlexandre Perrin.endfor
68*5f1e34d9SAlexandre Perrin__classes_cookie=${__classdest}.classes.done
69*5f1e34d9SAlexandre PerrinCLEANFILES+= ${__classes} ${__classes_cookie}
70*5f1e34d9SAlexandre Perrin
71*5f1e34d9SAlexandre Perrin${__classes_cookie}:	${__classes}
72*5f1e34d9SAlexandre Perrin	CLASSPATH=${CLASSPATH} ${JAVAC} ${JAVAC_FLAGS} ${.OODATE:@c@${SRCS_$c}@}
73*5f1e34d9SAlexandre Perrin	@touch ${.TARGET}
74*5f1e34d9SAlexandre Perrin
75*5f1e34d9SAlexandre Perrinall:	${__classes_cookie}
76*5f1e34d9SAlexandre Perrin
77*5f1e34d9SAlexandre Perrin.else
78*5f1e34d9SAlexandre Perrin# this will work with other BSD make's
79*5f1e34d9SAlexandre Perrin.for __s in ${SRCS}
80*5f1e34d9SAlexandre Perrin__c:= ${__classdest}${__s:.java=.class}
81*5f1e34d9SAlexandre Perrin${__c}:	${__s}
82*5f1e34d9SAlexandre Perrin	CLASSPATH=${CLASSPATH} ${JAVAC} ${JAVAC_FLAGS} ${.OODATE}
83*5f1e34d9SAlexandre Perrin.endfor
84*5f1e34d9SAlexandre Perrin
85*5f1e34d9SAlexandre Perrinall:	${SRCS:%.java=${__classdest}%.class}
86*5f1e34d9SAlexandre Perrin
87*5f1e34d9SAlexandre Perrin.endif
88*5f1e34d9SAlexandre Perrin
89*5f1e34d9SAlexandre Perrin.if !target(cleanjava)
90*5f1e34d9SAlexandre Perrincleanjava:
91*5f1e34d9SAlexandre Perrin	rm -f [Ee]rrs mklog core *.core ${PROG} ${CLEANFILES}
92*5f1e34d9SAlexandre Perrin
93*5f1e34d9SAlexandre Perrinclean: cleanjava
94*5f1e34d9SAlexandre Perrincleandir: cleanjava
95*5f1e34d9SAlexandre Perrin.endif
96*5f1e34d9SAlexandre Perrin
97*5f1e34d9SAlexandre Perrin.endif
98