xref: /trunk/main/solenv/gbuild/JavaClassSet.mk (revision 31bbceb0f9d64c0c2c3b22a794a1666c1f33396e)
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