github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/make/core/distdir.mk (about)

     1  #
     2  # Copyright (C) 2007 The Android Open Source Project
     3  #
     4  # Licensed under the Apache License, Version 2.0 (the "License");
     5  # you may not use this file except in compliance with the License.
     6  # You may obtain a copy of the License at
     7  #
     8  #      http://www.apache.org/licenses/LICENSE-2.0
     9  #
    10  # Unless required by applicable law or agreed to in writing, software
    11  # distributed under the License is distributed on an "AS IS" BASIS,
    12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  # See the License for the specific language governing permissions and
    14  # limitations under the License.
    15  #
    16  
    17  # When specifying "dist", the user has asked that we copy the important
    18  # files from this build into DIST_DIR.
    19  
    20  ifdef dist_goal
    21  
    22  # $(1): source file
    23  # $(2): destination file
    24  # $(3): goals that should copy the file
    25  #
    26  define copy-one-dist-file
    27  $(3): $(2)
    28  $(2): $(1)
    29  	@echo "Dist: $$@"
    30  	$$(copy-file-to-new-target-with-cp)
    31  endef
    32  
    33  # A global variable to remember all dist'ed src:dst pairs.
    34  # So if a src:dst is already dist'ed by another goal,
    35  # we should just establish the dependency and don't really call the
    36  # copy-one-dist-file to avoid multiple rules for the same target.
    37  _all_dist_src_dst_pairs :=
    38  # Other parts of the system should use this function to associate
    39  # certain files with certain goals.  When those goals are built
    40  # and "dist" is specified, the marked files will be copied to DIST_DIR.
    41  #
    42  # $(1): a list of goals  (e.g. droid, sdk, pdk, ndk)
    43  # $(2): the dist files to add to those goals.  If the file contains ':',
    44  #       the text following the colon is the name that the file is copied
    45  #       to under the dist directory.  Subdirs are ok, and will be created
    46  #       at copy time if necessary.
    47  define dist-for-goals
    48  $(foreach file,$(2), \
    49    $(eval fw := $(subst :,$(space),$(file))) \
    50    $(eval src := $(word 1,$(fw))) \
    51    $(eval dst := $(word 2,$(fw))) \
    52    $(eval dst := $(if $(dst),$(dst),$(notdir $(src)))) \
    53    $(if $(filter $(_all_dist_src_dst_pairs),$(src):$(dst)),\
    54      $(eval $(call add-dependency,$(1),$(DIST_DIR)/$(dst))),\
    55      $(eval $(call copy-one-dist-file,\
    56        $(src),$(DIST_DIR)/$(dst),$(1)))\
    57        $(eval _all_dist_src_dst_pairs += $(src):$(dst))\
    58    )\
    59  )
    60  endef
    61  
    62  else # !dist_goal
    63  
    64  # empty definition when not building dist
    65  define dist-for-goals
    66  endef
    67  
    68  endif # !dist_goal