xref: /src/contrib/bmake/mk/java.mk (revision c60f6422ffae3ea85e7b10bad950ad27c463af18)
1638c66deSSimon J. Gerraty# $Id: java.mk,v 1.18 2025/08/09 22:42:24 sjg Exp $
270bd6b31SSimon J. Gerraty#
370bd6b31SSimon J. Gerraty#	@(#) Copyright (c) 1998-2001, Simon J. Gerraty
470bd6b31SSimon J. Gerraty#
5638c66deSSimon J. Gerraty#	SPDX-License-Identifier: BSD-2-Clause
670bd6b31SSimon J. Gerraty#
770bd6b31SSimon J. Gerraty#	Please send copies of changes and bug-fixes to:
870bd6b31SSimon J. Gerraty#	sjg@crufty.net
970bd6b31SSimon J. Gerraty#
1070bd6b31SSimon J. Gerraty
1170bd6b31SSimon J. Gerraty.if !target(__${.PARSEFILE}__)
122935fe82SSimon J. Gerraty__${.PARSEFILE}__: .NOTMAIN
1370bd6b31SSimon J. Gerraty
1470bd6b31SSimon J. Gerraty.include <init.mk>
1570bd6b31SSimon J. Gerraty
1670bd6b31SSimon J. GerratyCLASSPATH?=.
1770bd6b31SSimon J. Gerraty
1870bd6b31SSimon J. Gerraty.if defined(PROG)
1970bd6b31SSimon J. GerratySRCS?=	${PROG:.class=.java}
2070bd6b31SSimon J. Gerraty.endif
2170bd6b31SSimon J. Gerraty.if !defined(SRCS) || empty(SRCS)
2270bd6b31SSimon J. GerratySRCS!=cd ${.CURDIR} && echo *.java
2370bd6b31SSimon J. Gerraty.endif
2470bd6b31SSimon J. Gerraty.SUFFIXES:	.class .java
2570bd6b31SSimon J. Gerraty
2670bd6b31SSimon J. GerratyCLEANFILES+= *.class
2770bd6b31SSimon J. Gerraty
2870bd6b31SSimon J. GerratyJAVAC?=   javac
2970bd6b31SSimon J. GerratyJAVADOC?= javadoc
3070bd6b31SSimon J. Gerraty
3170bd6b31SSimon J. Gerraty.if !target(docs)
3270bd6b31SSimon J. Gerratydocs:
3370bd6b31SSimon J. Gerraty	${JAVADOC} ${JAVADOC_FLAGS} ${SRCS}
3470bd6b31SSimon J. Gerraty.endif
3570bd6b31SSimon J. Gerraty
3670bd6b31SSimon J. Gerraty.if defined(JAVADESTDIR) && !empty(JAVADESTDIR)
3770bd6b31SSimon J. GerratyJAVASRCDIR?=${JAVADESTDIR:H}/src
3870bd6b31SSimon J. Gerraty__classdest:=${JAVADESTDIR}${.CURDIR:S,${JAVASRCDIR},,}/
3970bd6b31SSimon J. GerratyCLASSPATH:=${CLASSPATH}:${JAVADESTDIR}
4070bd6b31SSimon J. GerratyJAVAC_FLAGS+= -d ${JAVADESTDIR}
4170bd6b31SSimon J. Gerraty.else
4270bd6b31SSimon J. Gerraty__classdest=
4370bd6b31SSimon J. Gerraty.endif
4470bd6b31SSimon J. Gerraty
4570bd6b31SSimon J. GerratyJAVAC_FLAGS+= ${JAVAC_DBG}
4670bd6b31SSimon J. Gerraty
4770bd6b31SSimon J. Gerraty.if defined(MAKE_VERSION) && !defined(NO_CLASSES_COOKIE)
4870bd6b31SSimon J. Gerraty# java works best by compiling a bunch of classes at once.
4970bd6b31SSimon J. Gerraty# this lot does that but needs a recent netbsd make or
5070bd6b31SSimon J. Gerraty# or its portable cousin bmake.
5170bd6b31SSimon J. Gerraty.for __s in ${SRCS}
5270bd6b31SSimon J. Gerraty__c:= ${__classdest}${__s:.java=.class}
5370bd6b31SSimon J. Gerraty.if !target(${__c})
5470bd6b31SSimon J. Gerraty# We need to do something to force __c's parent to be made.
5570bd6b31SSimon J. Gerraty${__c}:	${__s}
5670bd6b31SSimon J. Gerraty	@rm -f ${.TARGET}
5770bd6b31SSimon J. Gerraty.endif
5870bd6b31SSimon J. GerratySRCS_${__c}=${__s}
5970bd6b31SSimon J. Gerraty__classes:= ${__classes} ${__c}
6070bd6b31SSimon J. Gerraty.endfor
6170bd6b31SSimon J. Gerraty__classes_cookie=${__classdest}.classes.done
6270bd6b31SSimon J. GerratyCLEANFILES+= ${__classes} ${__classes_cookie}
6370bd6b31SSimon J. Gerraty
6470bd6b31SSimon J. Gerraty${__classes_cookie}:	${__classes}
6570bd6b31SSimon J. Gerraty	CLASSPATH=${CLASSPATH} ${JAVAC} ${JAVAC_FLAGS} ${.OODATE:@c@${SRCS_$c}@}
6670bd6b31SSimon J. Gerraty	@touch ${.TARGET}
6770bd6b31SSimon J. Gerraty
6870bd6b31SSimon J. Gerratyall:	${__classes_cookie}
6970bd6b31SSimon J. Gerraty
7070bd6b31SSimon J. Gerraty.else
7170bd6b31SSimon J. Gerraty# this will work with other BSD make's
7270bd6b31SSimon J. Gerraty.for __s in ${SRCS}
7370bd6b31SSimon J. Gerraty__c:= ${__classdest}${__s:.java=.class}
7470bd6b31SSimon J. Gerraty${__c}:	${__s}
7570bd6b31SSimon J. Gerraty	CLASSPATH=${CLASSPATH} ${JAVAC} ${JAVAC_FLAGS} ${.OODATE}
7670bd6b31SSimon J. Gerraty.endfor
7770bd6b31SSimon J. Gerraty
7870bd6b31SSimon J. Gerratyall:	${SRCS:%.java=${__classdest}%.class}
7970bd6b31SSimon J. Gerraty
8070bd6b31SSimon J. Gerraty.endif
8170bd6b31SSimon J. Gerraty
8270bd6b31SSimon J. Gerraty.if !target(cleanjava)
8370bd6b31SSimon J. Gerratycleanjava:
8470bd6b31SSimon J. Gerraty	rm -f [Ee]rrs mklog core *.core ${PROG} ${CLEANFILES}
8570bd6b31SSimon J. Gerraty
8670bd6b31SSimon J. Gerratyclean: cleanjava
8770bd6b31SSimon J. Gerratycleandir: cleanjava
8870bd6b31SSimon J. Gerraty.endif
8970bd6b31SSimon J. Gerraty
9070bd6b31SSimon J. Gerraty.endif
91