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