17871dc3eSAndrew Rist#************************************************************** 2cdf0e10cSrcweir# 37871dc3eSAndrew Rist# Licensed to the Apache Software Foundation (ASF) under one 47871dc3eSAndrew Rist# or more contributor license agreements. See the NOTICE file 57871dc3eSAndrew Rist# distributed with this work for additional information 67871dc3eSAndrew Rist# regarding copyright ownership. The ASF licenses this file 77871dc3eSAndrew Rist# to you under the Apache License, Version 2.0 (the 87871dc3eSAndrew Rist# "License"); you may not use this file except in compliance 97871dc3eSAndrew Rist# with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir# 117871dc3eSAndrew Rist# http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir# 137871dc3eSAndrew Rist# Unless required by applicable law or agreed to in writing, 147871dc3eSAndrew Rist# software distributed under the License is distributed on an 157871dc3eSAndrew Rist# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 167871dc3eSAndrew Rist# KIND, either express or implied. See the License for the 177871dc3eSAndrew Rist# specific language governing permissions and limitations 187871dc3eSAndrew Rist# under the License. 19cdf0e10cSrcweir# 207871dc3eSAndrew Rist#************************************************************** 217871dc3eSAndrew Rist 227871dc3eSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweirgb_JavaClassSet_REPOSITORYNAMES := $(gb_Helper_REPOSITORYNAMES) 25*69f987b1SDamjan Jovanovicgb_JavaClassSet_JAVACCOMMAND := $(JAVACOMPILER) $(JAVAFLAGS) 26cdf0e10cSrcweir 27cdf0e10cSrcweirdefine gb_JavaClassSet__command 28cdf0e10cSrcweir$(call gb_Helper_abbreviate_dirs_native,\ 29cdf0e10cSrcweir mkdir -p $(dir $(1)) && \ 307f9adc59SDamjan Jovanovic $(gb_JavaClassSet_JAVACCOMMAND) -cp "$(CLASSPATH)" -encoding UTF8 \ 317f9adc59SDamjan Jovanovic -d $(call gb_JavaClassSet_get_classdir,$(2)) $(if $(filter-out $(JARDEPS),$(3)),\ 32b63233d8Sdamjan $(filter-out $(JARDEPS),$(3)),\ 33b63233d8Sdamjan $(filter-out $(JARDEPS),$(4))) &&\ 34cdf0e10cSrcweir touch $(1)) 35cdf0e10cSrcweir 36cdf0e10cSrcweirendef 37cdf0e10cSrcweir 38b63233d8Sdamjan$(call gb_JavaClassSet_get_target,%) : 39b63233d8Sdamjan $(call gb_Output_announce,$*,$(true),JCS,3) 40b63233d8Sdamjan $(call gb_JavaClassSet__command,$@,$*,$?,$^) 41cdf0e10cSrcweir 42cdf0e10cSrcweir$(call gb_JavaClassSet_get_clean_target,%) : 43cdf0e10cSrcweir $(call gb_Output_announce,$*,$(false),JCS,3) 44cdf0e10cSrcweir $(call gb_Helper_abbreviate_dirs,\ 45cdf0e10cSrcweir rm -rf $(dir $(call gb_JavaClassSet_get_target,$*))) 46cdf0e10cSrcweir 47b63233d8Sdamjan# no initialization of scoped variable CLASSPATH as it is "inherited" from controlling instance (e.g. JUnitTest, Jar) 48b63233d8Sdamjan# UGLY: cannot use target local variable for REPO because it's needed in prereq 49cdf0e10cSrcweirdefine gb_JavaClassSet_JavaClassSet 50b63233d8Sdamjan$(if $(filter $(2),$(gb_JavaClassSet_REPOSITORYNAMES)),,\ 51b63233d8Sdamjan $(error JavaClassSet: no or invalid repository given; known repositories: \ 52b63233d8Sdamjan $(gb_JavaClassSet_REPOSITORYNAMES))) 53b63233d8Sdamjangb_JavaClassSet_REPO_$(1) := $(2) 54b63233d8Sdamjan$(call gb_JavaClassSet_get_target,$(1)) : JARDEPS := 55cdf0e10cSrcweirendef 56cdf0e10cSrcweir 57cdf0e10cSrcweirdefine gb_JavaClassSet__get_sourcefile 58b63233d8Sdamjan$($(1))/$(2).java 59cdf0e10cSrcweirendef 60cdf0e10cSrcweir 61cdf0e10cSrcweirdefine gb_JavaClassSet_add_sourcefile 62b63233d8Sdamjan$(eval $(call gb_JavaClassSet_get_target,$(1)) : \ 63b63233d8Sdamjan $(call gb_JavaClassSet__get_sourcefile,$(gb_JavaClassSet_REPO_$(1)),$(2))) 64cdf0e10cSrcweirendef 65cdf0e10cSrcweir 66cdf0e10cSrcweirdefine gb_JavaClassSet_add_sourcefiles 67cdf0e10cSrcweir$(foreach sourcefile,$(2),$(call gb_JavaClassSet_add_sourcefile,$(1),$(sourcefile))) 68cdf0e10cSrcweirendef 69cdf0e10cSrcweir 70cdf0e10cSrcweirdefine gb_JavaClassSet_set_classpath 71b63233d8Sdamjan$(eval $(call gb_JavaClassSet_get_target,$(1)) : CLASSPATH := $(2)) 72b63233d8Sdamjanendef 73cdf0e10cSrcweir 74b63233d8Sdamjan# problem: currently we can't get these dependencies to work 75b63233d8Sdamjan# build order dependency is a hack to get these prerequisites out of the way in the build command 76b63233d8Sdamjandefine gb_JavaClassSet_add_jar 77b63233d8Sdamjan$(eval $(call gb_JavaClassSet_get_target,$(1)) : $(2)) 78b63233d8Sdamjan$(eval $(call gb_JavaClassSet_get_target,$(1)) : CLASSPATH := $$(CLASSPATH)$$(gb_CLASSPATHSEP)$(strip $(2))) 79b63233d8Sdamjan$(eval $(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(2)) 80b63233d8Sdamjanendef 81b63233d8Sdamjan 82b63233d8Sdamjan# this does not generate dependency on the jar 83b63233d8Sdamjandefine gb_JavaClassSet_add_system_jar 84b63233d8Sdamjan$(eval $(call gb_JavaClassSet_get_target,$(1)) : CLASSPATH := $$(CLASSPATH)$$(gb_CLASSPATHSEP)$(strip $(2))) 85b63233d8Sdamjan$(eval $(call gb_JavaClassSet_get_target,$(1)) : JARDEPS += $(2)) 86b63233d8Sdamjanendef 87b63233d8Sdamjan 88b63233d8Sdamjandefine gb_JavaClassSet_add_jars 89b63233d8Sdamjan$(foreach jar,$(2),$(call gb_JavaClassSet_add_jar,$(1),$(jar))) 90b63233d8Sdamjanendef 91b63233d8Sdamjan 92b63233d8Sdamjandefine gb_JavaClassSet_add_system_jars 93b63233d8Sdamjan$(foreach jar,$(2),$(call gb_JavaClassSet_add_system_jar,$(1),$(jar))) 94b63233d8Sdamjanendef 95b63233d8Sdamjan 96b63233d8Sdamjan# this forwards to functions that must be defined in RepositoryExternal.mk. 97b63233d8Sdamjan# $(call gb_LinkTarget_use_external,library,external) 98b63233d8Sdamjandefine gb_JavaClassSet_use_external 99b63233d8Sdamjan$(eval $(if $(value gb_JavaClassSet__use_$(2)),\ 100b63233d8Sdamjan $(call gb_JavaClassSet__use_$(2),$(1)),\ 101b63233d8Sdamjan $(error gb_JavaClassSet_use_external: unknown external: $(2)))) 102b63233d8Sdamjanendef 103b63233d8Sdamjan 104b63233d8Sdamjandefine gb_JavaClassSet_use_externals 105b63233d8Sdamjan$(foreach external,$(2),$(call gb_JavaClassSet_use_external,$(1),$(external))) 106cdf0e10cSrcweirendef 107cdf0e10cSrcweir 108cdf0e10cSrcweir# vim: set noet sw=4 ts=4: 109