Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / nlfaultinjection / repo / third_party / nlbuild-autotools / repo / scripts / mkskeleton
1 #!/usr/bin/env bash
2
3 #
4 #    Copyright 2015-2018 Nest Labs Inc. All Rights Reserved.
5 #
6 #    Licensed under the Apache License, Version 2.0 (the "License");
7 #    you may not use this file except in compliance with the License.
8 #    You may obtain a copy of the License at
9 #
10 #    http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #    Unless required by applicable law or agreed to in writing, software
13 #    distributed under the License is distributed on an "AS IS" BASIS,
14 #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #    See the License for the specific language governing permissions and
16 #    limitations under the License.
17 #
18
19 #
20 #    Description:
21 #      This file is a convenience script that will create a skeleton
22 #      build layout using the nlbuild-autotools package.
23 #
24
25 YEAR=`date "+%Y"`
26 NAME=""
27 DESCRIPTION=""
28 DIR=""
29 VERSION="1.0"
30 verbose=1
31
32 #
33 # usage
34 #
35 # Display program usage.
36 #
37 usage() {
38     name=`basename $0`
39
40     echo "Usage: ${name} [ options ]"
41
42     if [ $1 -ne 0 ]; then
43         echo "Try '${name} -h' for more information."
44     fi
45
46     if [ $1 -ne 1 ]; then
47         echo ""
48         echo "  -h, --help                  Print this help, then exit."
49         echo "  -I DIR                      Specify directory DIR as the root of the "
50         echo "                              nlbuild-autotools repository."
51         echo "  -v, --verbose               Verbosely report mkskeleton progress (default: yes)."
52         echo "  --package-description DESC  Specify description DESC as a the "
53         echo "                              package description."
54         echo "  --package-name NAME         Specify name NAME as the package name."
55         echo "  --package-version VERSION   Specify version VERSION as the initial "
56         echo "                              version for the package (default: ${VERSION})."
57         echo "  --package-year YEAR         Specify year YEAR as the creation "
58         echo "                              year for the package (default: ${YEAR})."
59         echo "  -q, --quiet                 Do not verbosely report mkskeleton progress (default: no)."
60
61         echo ""
62     fi
63
64     exit $1
65 }
66
67 #
68 # log
69 #
70 log() {
71     if [ ! -z ${verbose} ] && [ ${verbose} -eq 1 ]; then
72         echo $*
73     fi
74 }
75
76 transform() {
77     local from="${1}"
78     local to="${2}"
79
80     sed                                                   \
81         -e "s,\@NLBUILD_AUTOTOOLS_STEM\@,${DIR},g"        \
82         -e "s,\@PACKAGE_DESCRIPTION\@,${DESCRIPTION},g"   \
83         -e "s,\@PACKAGE_SHORT_LOWER\@,${LOWER},g"         \
84         -e "s,\@PACKAGE_SHORT_UPPER\@,${UPPER},g"         \
85         -e "s,\@PACKAGE_YEAR\@,${YEAR},g"                 \
86         < "${from}" > "${to}"
87 }
88
89 populate() {
90     local nlbuild="${1}"
91     local perm=${2}
92     local file="${3}"
93     local directory="${4}"
94     local stem="${file%.*}"
95     local extension="${file##*.}"
96     local from
97     local to
98
99     if [ -r "${nlbuild}/examples/${file}" ]; then
100         from="${nlbuild}/examples/${file}"
101
102     elif [ -r "${nlbuild}/examples/${stem}-${directory}.${extension}" ]; then
103         from="${nlbuild}/examples/${stem}-${directory}.${extension}"
104
105     elif [ "${directory}" = "." ] && [ -r "${nlbuild}/examples/${stem}-toplevel.${extension}" ]; then
106         from="${nlbuild}/examples/${stem}-toplevel.${extension}"
107
108     else
109         echo "Cannot find an example file \"${file}\" for directory \"${directory}\"."
110         exit 1
111
112     fi
113
114     to="${directory}/${file}"
115
116     log "Creating \"${to}\"..."
117
118     transform "${from}" "${to}"
119
120     if [ $? = 0 ]; then
121         chmod ${perm} "${to}"
122     fi
123 }
124
125 #
126 # link
127 #
128 link() {
129     local nlbuild="${1}"
130     local perm=${2}
131     local source="${3}"
132     local directory="${4}"
133     local from="${nlbuild}/scripts/${source}"
134     local to="${directory}/${source}"
135
136     log "Creating \"${to}\"..."
137
138     ln -sf "${from}" "${to}"
139 }
140
141 # Parse out any command line options
142
143 while [ ${#} -gt 0 ]; do
144     if [ ${1} == "-h" ] || [ ${1} == "--help" ]; then
145         usage 0
146
147     elif [ ${1} == "-I" ]; then
148         DIR="${2}"
149         shift 2
150
151     elif [ ${1} == "--package-description" ]; then
152         DESCRIPTION="${2}"
153         shift 2
154
155     elif [ ${1} == "--package-name" ]; then
156         NAME="${2}"
157         shift 2
158
159         UPPER="`echo ${NAME} | tr '[[:lower:]]' '[[:upper:]]'`"
160         LOWER="`echo ${NAME} | tr '[[:upper:]]' '[[:lower:]]'`"
161
162     elif [ ${1} == "--package-version" ]; then
163         VERSION="${2}"
164         shift 2
165
166     elif [ ${1} == "--package-year" ]; then
167         YEAR="${2}"
168         shift 2
169
170     elif [ ${1} == "-q" ] || [ ${1} == "--quiet" ]; then
171         verbose=0
172         shift 1
173
174     elif [ ${1} == "-v" ] || [ ${1} == "--verbose" ]; then
175         verbose=1
176         shift 1
177
178     else
179         usage 1
180
181     fi
182 done
183
184 # Sanity check the command line arguments
185
186 if [ -z "${DIR}" ]; then
187     echo "$0: No -I option specified. Please provide the location of the nlbuild-autotools directory."
188     exit 1
189
190 fi
191
192 if [ -z "${DESCRIPTION}" ]; then
193     echo "$0: Please provide a package description via --package-description."
194     exit 1
195 fi
196
197 if [ -z "${NAME}" ]; then
198     echo "$0: Please provide a package name via --package-name."
199     exit 1
200 fi
201
202 if [ -z "${VERSION}" ]; then
203     echo "$0: Please provide a package default version via --package-version."
204     exit 1
205 fi
206
207 if [ -z "${YEAR}" ]; then
208     echo "$0: Please provide a package creation year via --package-year."
209     exit 1
210 fi
211
212 # Create the skeleton directories
213
214 DIRS="doc third_party include src tests"
215
216 for dir in ${DIRS}; do
217     log "Creating \"${dir}\"..."
218     mkdir -p "${dir}"
219 done
220
221 # Populate the skeleton directories
222
223 populate "${DIR}" 664 configure.ac        .
224 populate "${DIR}" 775 bootstrap           .
225 populate "${DIR}" 664 repos.conf          .
226 populate "${DIR}" 664 Makefile.am         .
227 populate "${DIR}" 664 Makefile-bootstrap  .
228 populate "${DIR}" 664 Makefile.am         doc
229 populate "${DIR}" 664 Doxyfile.in         doc
230 populate "${DIR}" 664 Makefile.am         third_party 
231 populate "${DIR}" 664 Makefile.am         src
232 populate "${DIR}" 664 Makefile.am         tests
233 link     "${DIR}" 775 bootstrap-configure .
234
235 # Create the default package version
236
237 log "Creating default version ${VERSION}..."
238
239 echo "${VERSION}" > ".default-version"