15f1e34d9SAlexandre Perrin# 25f1e34d9SAlexandre Perrin# RCSid: 3*6eef5f0cSAntonio Huete Jimenez# $Id: java.mk,v 1.16 2021/12/08 05:56:50 sjg Exp $ 45f1e34d9SAlexandre Perrin 55f1e34d9SAlexandre Perrin# @(#) Copyright (c) 1998-2001, Simon J. Gerraty 65f1e34d9SAlexandre Perrin# 75f1e34d9SAlexandre Perrin# This file is provided in the hope that it will 85f1e34d9SAlexandre Perrin# be of use. There is absolutely NO WARRANTY. 95f1e34d9SAlexandre Perrin# Permission to copy, redistribute or otherwise 105f1e34d9SAlexandre Perrin# use this file is hereby granted provided that 115f1e34d9SAlexandre Perrin# the above copyright notice and this notice are 125f1e34d9SAlexandre Perrin# left intact. 135f1e34d9SAlexandre Perrin# 145f1e34d9SAlexandre Perrin# Please send copies of changes and bug-fixes to: 155f1e34d9SAlexandre Perrin# sjg@crufty.net 165f1e34d9SAlexandre Perrin# 175f1e34d9SAlexandre Perrin 185f1e34d9SAlexandre Perrin.if !target(__${.PARSEFILE}__) 19*6eef5f0cSAntonio Huete Jimenez__${.PARSEFILE}__: .NOTMAIN 205f1e34d9SAlexandre Perrin 215f1e34d9SAlexandre Perrin.include <init.mk> 225f1e34d9SAlexandre Perrin 235f1e34d9SAlexandre PerrinCLASSPATH?=. 245f1e34d9SAlexandre Perrin 255f1e34d9SAlexandre Perrin.if defined(PROG) 265f1e34d9SAlexandre PerrinSRCS?= ${PROG:.class=.java} 275f1e34d9SAlexandre Perrin.endif 285f1e34d9SAlexandre Perrin.if !defined(SRCS) || empty(SRCS) 295f1e34d9SAlexandre PerrinSRCS!=cd ${.CURDIR} && echo *.java 305f1e34d9SAlexandre Perrin.endif 315f1e34d9SAlexandre Perrin.SUFFIXES: .class .java 325f1e34d9SAlexandre Perrin 335f1e34d9SAlexandre PerrinCLEANFILES+= *.class 345f1e34d9SAlexandre Perrin 355f1e34d9SAlexandre PerrinJAVAC?= javac 365f1e34d9SAlexandre PerrinJAVADOC?= javadoc 375f1e34d9SAlexandre Perrin 385f1e34d9SAlexandre Perrin.if !target(docs) 395f1e34d9SAlexandre Perrindocs: 405f1e34d9SAlexandre Perrin ${JAVADOC} ${JAVADOC_FLAGS} ${SRCS} 415f1e34d9SAlexandre Perrin.endif 425f1e34d9SAlexandre Perrin 435f1e34d9SAlexandre Perrin.if defined(JAVADESTDIR) && !empty(JAVADESTDIR) 445f1e34d9SAlexandre PerrinJAVASRCDIR?=${JAVADESTDIR:H}/src 455f1e34d9SAlexandre Perrin__classdest:=${JAVADESTDIR}${.CURDIR:S,${JAVASRCDIR},,}/ 465f1e34d9SAlexandre PerrinCLASSPATH:=${CLASSPATH}:${JAVADESTDIR} 475f1e34d9SAlexandre PerrinJAVAC_FLAGS+= -d ${JAVADESTDIR} 485f1e34d9SAlexandre Perrin.else 495f1e34d9SAlexandre Perrin__classdest= 505f1e34d9SAlexandre Perrin.endif 515f1e34d9SAlexandre Perrin 525f1e34d9SAlexandre PerrinJAVAC_FLAGS+= ${JAVAC_DBG} 535f1e34d9SAlexandre Perrin 545f1e34d9SAlexandre Perrin.if defined(MAKE_VERSION) && !defined(NO_CLASSES_COOKIE) 555f1e34d9SAlexandre Perrin# java works best by compiling a bunch of classes at once. 565f1e34d9SAlexandre Perrin# this lot does that but needs a recent netbsd make or 575f1e34d9SAlexandre Perrin# or its portable cousin bmake. 585f1e34d9SAlexandre Perrin.for __s in ${SRCS} 595f1e34d9SAlexandre Perrin__c:= ${__classdest}${__s:.java=.class} 605f1e34d9SAlexandre Perrin.if !target(${__c}) 615f1e34d9SAlexandre Perrin# We need to do something to force __c's parent to be made. 625f1e34d9SAlexandre Perrin${__c}: ${__s} 635f1e34d9SAlexandre Perrin @rm -f ${.TARGET} 645f1e34d9SAlexandre Perrin.endif 655f1e34d9SAlexandre PerrinSRCS_${__c}=${__s} 665f1e34d9SAlexandre Perrin__classes:= ${__classes} ${__c} 675f1e34d9SAlexandre Perrin.endfor 685f1e34d9SAlexandre Perrin__classes_cookie=${__classdest}.classes.done 695f1e34d9SAlexandre PerrinCLEANFILES+= ${__classes} ${__classes_cookie} 705f1e34d9SAlexandre Perrin 715f1e34d9SAlexandre Perrin${__classes_cookie}: ${__classes} 725f1e34d9SAlexandre Perrin CLASSPATH=${CLASSPATH} ${JAVAC} ${JAVAC_FLAGS} ${.OODATE:@c@${SRCS_$c}@} 735f1e34d9SAlexandre Perrin @touch ${.TARGET} 745f1e34d9SAlexandre Perrin 755f1e34d9SAlexandre Perrinall: ${__classes_cookie} 765f1e34d9SAlexandre Perrin 775f1e34d9SAlexandre Perrin.else 785f1e34d9SAlexandre Perrin# this will work with other BSD make's 795f1e34d9SAlexandre Perrin.for __s in ${SRCS} 805f1e34d9SAlexandre Perrin__c:= ${__classdest}${__s:.java=.class} 815f1e34d9SAlexandre Perrin${__c}: ${__s} 825f1e34d9SAlexandre Perrin CLASSPATH=${CLASSPATH} ${JAVAC} ${JAVAC_FLAGS} ${.OODATE} 835f1e34d9SAlexandre Perrin.endfor 845f1e34d9SAlexandre Perrin 855f1e34d9SAlexandre Perrinall: ${SRCS:%.java=${__classdest}%.class} 865f1e34d9SAlexandre Perrin 875f1e34d9SAlexandre Perrin.endif 885f1e34d9SAlexandre Perrin 895f1e34d9SAlexandre Perrin.if !target(cleanjava) 905f1e34d9SAlexandre Perrincleanjava: 915f1e34d9SAlexandre Perrin rm -f [Ee]rrs mklog core *.core ${PROG} ${CLEANFILES} 925f1e34d9SAlexandre Perrin 935f1e34d9SAlexandre Perrinclean: cleanjava 945f1e34d9SAlexandre Perrincleandir: cleanjava 955f1e34d9SAlexandre Perrin.endif 965f1e34d9SAlexandre Perrin 975f1e34d9SAlexandre Perrin.endif 98