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