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