lin
2025-04-16 ddfd1960bbbcff04beea3129c53b2dbe43482ce8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Makefile for kunos
#
# Copyright (C) 2018 <huafenghuang@allwinnertech.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
# we want bash as shell
SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
               else if [ -x /bin/bash ]; then echo /bin/bash; \
               else echo sh; fi; fi)
 
TARGET_DIR := $(LICHEE_BR_OUT)/target
STAGING_DIR := ${LICHEE_BR_OUT}/staging
TARGET_TOP := $(shell pwd)
 
# Convenient variables
comma   := ,
quote   := "
squote  := '
empty   :=
space   := $(empty) $(empty)
 
$(warning "----------1--------")
$(warning $(shell pwd))
 
-include ${LICHEE_PRODUCT_CONFIG_DIR}/${LICHEE_BOARD}/copy_files.mk
###########################################################
## Read the word out of a colon-separated list of words.
## This has the same behavior as the built-in function
## $(word n,str).
##
## The individual words may not contain spaces.
##
## $(1): 1 based index
## $(2): value of the form a:b:c...
###########################################################
 
define word-colon
$(word $(1),$(subst :,$(space),$(2)))
endef
 
###########################################################
## Append a leaf to a base path.  Properly deals with
## base paths ending in /.
##
## $(1): base path
## $(2): leaf path
###########################################################
 
define append-path
$(subst //,/,$(1)/$(2))
endef
# Copy a single file from one place to another,
# preserving permissions and overwriting any existing
# file.
# When we used acp, it could not handle high resolution timestamps
# on file systems like ext4. Because of that, '-t' option was disabled
# and copy-file-to-target was identical to copy-file-to-new-target.
# Keep the behavior until we audit and ensure that switching this back
# won't break anything.
define copy-file-to-target
$(1):$(2) FORCE
   @echo '   COPY FILES  $$@'
   @mkdir -p $$(dir $$@)
   @rm -rf $$@
   @cp -rf $$< $$@
endef
 
#####################################################
# Define rules to copy PRODUCT_COPY_FILES defined by the product.
# PRODUCT_COPY_FILES contains words like <source file>:<dest file>[:<owner>].
# <dest file> is relative to $(TARGET_DIR), so it should look like,
# e.g."etc/file".
# The filter part means "only eval the copy-one-file rule if this
# src:dest pair is the first one to match the same dest"
#$(1): the src:dest pair
#####################################################
unique_product_copy_files_pairs :=
ALL_DEFAULT_INSTALLED_FILES :=
$(foreach cf,$(PRODUCT_COPY_FILES), \
    $(if $(filter $(unique_product_copy_files_pairs),$(cf)),,\
        $(eval unique_product_copy_files_pairs += $(cf))))
unique_product_copy_files_destinations :=
$(foreach cf,$(unique_product_copy_files_pairs), \
    $(eval _dest := $(call word-colon,2,$(cf))) \
   $(eval _src := $(call word-colon,1,$(cf))) \
    $(if $(filter $(unique_product_copy_files_destinations),$(_dest)), \
        $(info PRODUCT_COPY_FILES $(cf) ignored.), \
   $(eval _fullsrc := $(call append-path,$(LICHEE_TOP_DIR),$(_src))) \
   $(eval _fulldest := $(call append-path,$(TARGET_DIR),$(_dest))) \
   $(eval $(call copy-file-to-target,$(_fulldest),$(_fullsrc))) \
   $(eval ALL_DEFAULT_INSTALLED_FILES += $(_fulldest))))
unique_product_copy_files_pairs :=
unique_product_copy_files_destinations :=
 
.PHONY:INSTALL_FILES FORCE
INSTALL_FILES:$(ALL_DEFAULT_INSTALLED_FILES)
 
.PHONY:clean FORCE
clean:
   @rm -rf $(ALL_DEFAULT_INSTALLED_FILES)
 
PHONY += FORCE
FORCE:
 
# Declare the contents of the .PHONY variable as phony.  We keep that
# information in a variable so we can use it in if_changed and friends.
.PHONY: $(PHONY)