xref: /dflybsd-src/contrib/bmake/mk/java.mk (revision 9e7ae5a0527a977cab412aede3a532cfe2903bbb)
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