17871dc3eSAndrew Rist#************************************************************** 27871dc3eSAndrew Rist# 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 107871dc3eSAndrew Rist# 117871dc3eSAndrew Rist# http://www.apache.org/licenses/LICENSE-2.0 127871dc3eSAndrew Rist# 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. 197871dc3eSAndrew Rist# 207871dc3eSAndrew Rist#************************************************************** 217871dc3eSAndrew Rist 227871dc3eSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweirgb_Helper_NULLFILE := /dev/null 25cdf0e10cSrcweir 26cdf0e10cSrcweirgb_Helper_MISC := $(WORKDIR)/Misc 27cdf0e10cSrcweir 28cdf0e10cSrcweirifeq ($(JAVACOMPILER),) 29cdf0e10cSrcweirJAVACOMPILER := javac 30cdf0e10cSrcweirendif 31cdf0e10cSrcweir 32cdf0e10cSrcweirifeq ($(JAVAINTERPRETER),) 33cdf0e10cSrcweirJAVAINTERPRETER := java 34cdf0e10cSrcweirendif 35cdf0e10cSrcweir 36cdf0e10cSrcweir# general propose phony target 37cdf0e10cSrcweirgb_Helper_PHONY := $(gb_Helper_MISC)/PHONY 38cdf0e10cSrcweir 39cdf0e10cSrcweir# general propose empty dummy target 40cdf0e10cSrcweirgb_Helper_MISCDUMMY := $(gb_Helper_MISC)/DUMMY 41cdf0e10cSrcweir 42cdf0e10cSrcweirgb_Helper_REPOSITORYNAMES := 43cdf0e10cSrcweir 44cdf0e10cSrcweir.PHONY : $(WORKDIR)/Misc/PHONY 45cdf0e10cSrcweir$(gb_Helper_MISCDUMMY) : 46cdf0e10cSrcweir @mkdir -p $(dir $@) && touch $@ 47cdf0e10cSrcweir 48cdf0e10cSrcweirdefine gb_Helper_abbreviate_dirs 49cdf0e10cSrcweirR=$(REPODIR) && \ 50cdf0e10cSrcweir$(subst $(REPODIR)/,$$R/,S=$(SRCDIR) && \ 51cdf0e10cSrcweir$(subst $(SRCDIR)/,$$S/,O=$(OUTDIR)) && \ 52cdf0e10cSrcweir$(subst $(SRCDIR)/,$$S/,$(subst $(OUTDIR)/,$$O/,W=$(WORKDIR) && $(subst $(WORKDIR)/,$$W/,$(1))))) 53cdf0e10cSrcweirendef 54cdf0e10cSrcweir 55cdf0e10cSrcweirdefine gb_Helper_make_clean_target 56cdf0e10cSrcweirgb_$(1)_get_clean_target = $(WORKDIR)/Clean/$(1)/$$(1) 57cdf0e10cSrcweir 58cdf0e10cSrcweirendef 59cdf0e10cSrcweir 60cdf0e10cSrcweirdefine gb_Helper_make_outdir_clean_target 61cdf0e10cSrcweirgb_$(1)_get_clean_target = $$(subst $(OUTDIR)/,$(WORKDIR)/Clean/OutDir/,$$(call gb_$(1)_get_target,$$(1))) 62cdf0e10cSrcweir 63cdf0e10cSrcweirendef 64cdf0e10cSrcweir 65cdf0e10cSrcweirdefine gb_Helper_make_dep_target 66cdf0e10cSrcweirgb_$(1)_get_dep_target = $(WORKDIR)/Dep/$(1)/$$(1).d 67cdf0e10cSrcweir 68cdf0e10cSrcweirendef 69cdf0e10cSrcweir 70cdf0e10cSrcweirdefine gb_Helper_make_clean_targets 71cdf0e10cSrcweir$(foreach targettype,$(1),\ 72cdf0e10cSrcweir $(call gb_Helper_make_clean_target,$(targettype))) 73cdf0e10cSrcweir 74cdf0e10cSrcweirendef 75cdf0e10cSrcweir 76cdf0e10cSrcweirdefine gb_Helper_make_outdir_clean_targets 77cdf0e10cSrcweir$(foreach targettype,$(1),\ 78cdf0e10cSrcweir $(call gb_Helper_make_outdir_clean_target,$(targettype))) 79cdf0e10cSrcweir 80cdf0e10cSrcweirendef 81cdf0e10cSrcweir 82cdf0e10cSrcweirdefine gb_Helper_make_dep_targets 83cdf0e10cSrcweir$(foreach targettype,$(1),\ 84cdf0e10cSrcweir $(call gb_Helper_make_dep_target,$(targettype))) 85cdf0e10cSrcweir 86cdf0e10cSrcweirendef 87cdf0e10cSrcweir 88cdf0e10cSrcweirdefine gb_Helper_get_outdir_clean_target 89cdf0e10cSrcweir$$(subst $(OUTDIR)/,$(WORKDIR)/Clean/OutDir/,$(1)) 90cdf0e10cSrcweirendef 91cdf0e10cSrcweir 92cdf0e10cSrcweirdefine gb_Helper_register_repository 93cdf0e10cSrcweirgb_Helper_CURRENTREPOSITORY := $(1) 94cdf0e10cSrcweirgb_Helper_REPOSITORYNAMES += $(1) 95cdf0e10cSrcweir 96cdf0e10cSrcweirendef 97cdf0e10cSrcweir 98*b63233d8Sdamjan# RepositoryExternal.mk is optional 99cdf0e10cSrcweirdefine gb_Helper_add_repository 100cdf0e10cSrcweirgb_Helper_CURRENTREPOSITORY := 101cdf0e10cSrcweirinclude $(1)/Repository.mk 102cdf0e10cSrcweirifeq ($$(gb_Helper_CURRENTREPOSITORY),) 103cdf0e10cSrcweir$$(eval $$(call gb_Output_error,No call to gb_Helper_register_repository in Repository.mk for repository $(1))) 104cdf0e10cSrcweirendif 105cdf0e10cSrcweir$$(gb_Helper_CURRENTREPOSITORY) := $(1) 106*b63233d8Sdamjan-include $(1)/RepositoryExternal.mk 107cdf0e10cSrcweir 108cdf0e10cSrcweirendef 109cdf0e10cSrcweir 110cdf0e10cSrcweirdefine gb_Helper_add_repositories 111cdf0e10cSrcweir$(foreach repo,$(1),$(call gb_Helper_add_repository,$(repo))) 112cdf0e10cSrcweir 113cdf0e10cSrcweirendef 114cdf0e10cSrcweir 115cdf0e10cSrcweirdefine gb_Helper_init_registries 116cdf0e10cSrcweirgb_Executable_VALIDGROUPS := UREBIN SDK OOO BRAND NONE 117cdf0e10cSrcweirgb_Library_VALIDGROUPS := OOOLIBS PLAINLIBS_NONE PLAINLIBS_URE PLAINLIBS_OOO RTLIBS RTVERLIBS STLLIBS UNOLIBS_URE UNOLIBS_OOO UNOVERLIBS 118cdf0e10cSrcweirgb_StaticLibrary_VALIDGROUPS := PLAINLIBS 119cdf0e10cSrcweir 120cdf0e10cSrcweir$$(foreach group,$$(gb_Executable_VALIDGROUPS),$$(eval gb_Executable_$$(group) :=)) 121cdf0e10cSrcweir$$(foreach group,$$(gb_Library_VALIDGROUPS),$$(eval gb_Library_$$(group) :=)) 122cdf0e10cSrcweir$$(foreach group,$$(gb_StaticLibrary_VALIDGROUPS),$$(eval gb_StaticLibrary_$$(group) :=)) 123cdf0e10cSrcweir 124cdf0e10cSrcweirendef 125cdf0e10cSrcweir 126cdf0e10cSrcweirdefine gb_Helper_collect_libtargets 127cdf0e10cSrcweirgb_Library_TARGETS := $$(foreach group,$$(gb_Library_VALIDGROUPS),$$(gb_Library_$$(group))) 128cdf0e10cSrcweirgb_StaticLibrary_TARGETS := $$(foreach group,$$(gb_StaticLibrary_VALIDGROUPS),$$(gb_StaticLibrary_$$(group))) 129cdf0e10cSrcweir 130cdf0e10cSrcweirendef 131cdf0e10cSrcweir 132cdf0e10cSrcweirdefine gb_Helper_collect_knownlibs 133cdf0e10cSrcweirgb_Library_KNOWNLIBS := $$(foreach group,$$(gb_Library_VALIDGROUPS),$$(gb_Library_$$(group))) 134cdf0e10cSrcweirgb_StaticLibrary_KNOWNLIBS := $$(foreach group,$$(gb_StaticLibrary_VALIDGROUPS),$$(gb_StaticLibrary_$$(group))) 135cdf0e10cSrcweir 136cdf0e10cSrcweirendef 137cdf0e10cSrcweir 138cdf0e10cSrcweirdefine gb_Helper_register_executables 139cdf0e10cSrcweirifeq ($$(filter $(1),$$(gb_Executable_VALIDGROUPS)),) 140cdf0e10cSrcweir$$(eval $$(call gb_Output_error,$(1) is not a valid group for executables. Valid groups are: $$(gb_Executable_VALIDGROUPS))) 141cdf0e10cSrcweirendif 142*b63233d8Sdamjan$(foreach group,$(gb_Executable_VALIDGROUPS),\ 143*b63233d8Sdamjan $(foreach target,$(2),\ 144*b63233d8Sdamjan $(if $(filter $(target),$(gb_Executable_$(group))),\ 145*b63233d8Sdamjan $(call gb_Output_error,gb_Helper_register_executables: already registered: $(target))))) 146*b63233d8Sdamjan$(if $(filter-out $(words $(2)),$(words $(sort $(2)))),\ 147*b63233d8Sdamjan $(call gb_Output_error,gb_Helper_register_executables: contains duplicates: $(2))) 148cdf0e10cSrcweir 149cdf0e10cSrcweirgb_Executable_$(1) += $(2) 150cdf0e10cSrcweir 151cdf0e10cSrcweirendef 152cdf0e10cSrcweir 153cdf0e10cSrcweirdefine gb_Helper_register_libraries 154cdf0e10cSrcweirifeq ($$(filter $(1),$$(gb_Library_VALIDGROUPS)),) 155cdf0e10cSrcweir$$(eval $$(call gb_Output_error,$(1) is not a valid group for libraries. Valid groups are: $$(gb_Library_VALIDGROUPS))) 156cdf0e10cSrcweirendif 157*b63233d8Sdamjan$(foreach group,$(gb_Library_VALIDGROUPS),\ 158*b63233d8Sdamjan $(foreach target,$(2),\ 159*b63233d8Sdamjan $(if $(filter $(target),$(gb_Library_$(group))),\ 160*b63233d8Sdamjan $(call gb_Output_error,gb_Helper_register_libraries: already registered: $(target))))) 161*b63233d8Sdamjan$(if $(filter-out $(words $(2)),$(words $(sort $(2)))),\ 162*b63233d8Sdamjan $(call gb_Output_error,gb_Helper_register_libraries: contains duplicates: $(2))) 163cdf0e10cSrcweir 164cdf0e10cSrcweirgb_Library_$(1) += $(2) 165cdf0e10cSrcweir 166cdf0e10cSrcweirendef 167cdf0e10cSrcweir 168cdf0e10cSrcweirdefine gb_Helper_register_static_libraries 169cdf0e10cSrcweirifeq ($$(filter $(1),$$(gb_StaticLibrary_VALIDGROUPS)),) 170cdf0e10cSrcweir$$(eval $$(call gb_Output_error,$(1) is not a valid group for static libraries. Valid groups are: $$(gb_StaticLibrary_VALIDGROUPS))) 171cdf0e10cSrcweirendif 172*b63233d8Sdamjan$(foreach group,$(gb_StaticLibrary_VALIDGROUPS),\ 173*b63233d8Sdamjan $(foreach target,$(2),\ 174*b63233d8Sdamjan $(if $(filter $(target),$(gb_StaticLibrary_$(group))),\ 175*b63233d8Sdamjan $(call gb_Output_error,gb_Helper_register_static_libraries: already registered: $(target))))) 176*b63233d8Sdamjan$(if $(filter-out $(words $(2)),$(words $(sort $(2)))),\ 177*b63233d8Sdamjan $(call gb_Output_error,gb_Helper_register_static_libraries: contains duplicates: $(2))) 178cdf0e10cSrcweir 179cdf0e10cSrcweirgb_StaticLibrary_$(1) += $(2) 180cdf0e10cSrcweir 181cdf0e10cSrcweirendef 182cdf0e10cSrcweir 183cdf0e10cSrcweir# vim: set noet sw=4 ts=4: 184