Home | History | Annotate | Download | only in core
      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 .PHONY: dist
     21 dist: ;
     22 
     23 dist_goal := $(strip $(filter dist,$(MAKECMDGOALS)))
     24 MAKECMDGOALS := $(strip $(filter-out dist,$(MAKECMDGOALS)))
     25 ifeq (,$(strip $(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS))))
     26 # The commandline was something like "make dist" or "make dist showcommands".
     27 # Add a dependency on a real target.
     28 dist: $(DEFAULT_GOAL)
     29 endif
     30 
     31 ifdef dist_goal
     32 
     33 # $(1): source file
     34 # $(2): destination file
     35 # $(3): goals that should copy the file
     36 #
     37 define copy-one-dist-file
     38 $(3): $(2)
     39 $(2): $(1)
     40 	@echo "Dist: $$@"
     41 	$$(copy-file-to-new-target-with-cp)
     42 endef
     43 
     44 # Other parts of the system should use this function to associate
     45 # certain files with certain goals.  When those goals are built
     46 # and "dist" is specified, the marked files will be copied to DIST_DIR.
     47 #
     48 # $(1): a list of goals  (e.g. droid, sdk, pdk, ndk)
     49 # $(2): the dist files to add to those goals.  If the file contains ':',
     50 #       the text following the colon is the name that the file is copied
     51 #       to under the dist directory.  Subdirs are ok, and will be created
     52 #       at copy time if necessary.
     53 define dist-for-goals
     54 $(foreach file,$(2), \
     55   $(eval fw := $(subst :,$(space),$(file))) \
     56   $(eval src := $(word 1,$(fw))) \
     57   $(eval dst := $(word 2,$(fw))) \
     58   $(eval dst := $(if $(dst),$(dst),$(notdir $(src)))) \
     59   $(eval \
     60       $(call copy-one-dist-file, \
     61           $(src), \
     62           $(DIST_DIR)/$(dst), \
     63 	  $(1) \
     64        ) \
     65    ) \
     66  )
     67 endef
     68 
     69 else # !dist_goal
     70 
     71 # empty definition when not building dist
     72 define dist-for-goals
     73 endef
     74 
     75 endif # !dist_goal
     76