1 |
#!/bin/sh |
2 |
# |
3 |
# ***** BEGIN LICENSE BLOCK ***** |
4 |
# Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
5 |
# |
6 |
# The contents of this file are subject to the Mozilla Public License Version |
7 |
# 1.1 (the "License"); you may not use this file except in compliance with |
8 |
# the License. You may obtain a copy of the License at |
9 |
# http://www.mozilla.org/MPL/ |
10 |
# |
11 |
# Software distributed under the License is distributed on an "AS IS" basis, |
12 |
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
13 |
# for the specific language governing rights and limitations under the |
14 |
# License. |
15 |
# |
16 |
# The Original Code is mozilla.org code. |
17 |
# |
18 |
# The Initial Developer of the Original Code is |
19 |
# Netscape Communications Corporation. |
20 |
# Portions created by the Initial Developer are Copyright (C) 1998 |
21 |
# the Initial Developer. All Rights Reserved. |
22 |
# |
23 |
# Contributor(s): |
24 |
# |
25 |
# Alternatively, the contents of this file may be used under the terms of |
26 |
# either of the GNU General Public License Version 2 or later (the "GPL"), |
27 |
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
28 |
# in which case the provisions of the GPL or the LGPL are applicable instead |
29 |
# of those above. If you wish to allow use of your version of this file only |
30 |
# under the terms of either the GPL or the LGPL, and not to allow others to |
31 |
# use your version of this file under the terms of the MPL, indicate your |
32 |
# decision by deleting the provisions above and replace them with the notice |
33 |
# and other provisions required by the GPL or the LGPL. If you do not delete |
34 |
# the provisions above, a recipient may use your version of this file under |
35 |
# the terms of any one of the MPL, the GPL or the LGPL. |
36 |
# |
37 |
# ***** END LICENSE BLOCK ***** |
38 |
|
39 |
# |
40 |
# This script will generate a single Makefile from a Makefile.in using |
41 |
# the config.status script. |
42 |
# |
43 |
# The config.status script is generated the first time you run |
44 |
# ./configure. |
45 |
# |
46 |
# |
47 |
# Usage: update-makefile.sh |
48 |
# |
49 |
# Send comments, improvements, bugs to ramiro@netscape.com |
50 |
# |
51 |
|
52 |
update_makefile_usage() { |
53 |
_progname=`expr //$0 : '.*/\(.*\)'` |
54 |
cat <<END_USAGE 2>&1 |
55 |
|
56 |
Usage: $_progname [-h -u] [<keyword>] |
57 |
-d <dir> Subdir to update |
58 |
-h Print usage |
59 |
END_USAGE |
60 |
} |
61 |
|
62 |
# Parse the command-line options |
63 |
# |
64 |
subdir= |
65 |
while getopts d:h OPT; do |
66 |
case $OPT in |
67 |
d) # Make sure "subdir" has exactly one ending slash |
68 |
subdir=`echo $OPTARG | sed 's/\/$//;'`"/" ;; |
69 |
\?|h) update_makefile_usage |
70 |
exit 1 |
71 |
;; |
72 |
esac |
73 |
done |
74 |
|
75 |
|
76 |
# find_depth: Pull the value of DEPTH out of Makefile (or Makefile.in) |
77 |
find_depth() { |
78 |
egrep '^DEPTH[ ]*=[ ]*\.' $1 | awk -F= '{ print $2; }' |
79 |
} |
80 |
|
81 |
# The Makefile to create |
82 |
target_makefile=`pwd`"/${subdir}Makefile" |
83 |
|
84 |
# Use $(DEPTH) in the Makefile or Makefile.in to determine the depth |
85 |
if [ -f Makefile.in ] |
86 |
then |
87 |
depth=`find_depth Makefile.in` |
88 |
elif [ -f Makefile ] |
89 |
then |
90 |
depth=`find_depth Makefile` |
91 |
elif [ -f ../Makefile ] |
92 |
then |
93 |
depth="../"`find_depth Makefile` |
94 |
else |
95 |
echo |
96 |
echo "There ain't no 'Makefile' or 'Makefile.in' over here: $pwd" |
97 |
echo |
98 |
exit |
99 |
fi |
100 |
|
101 |
# 'cd' to the root of the tree to run "config.status" there |
102 |
cd $depth |
103 |
|
104 |
# Strip the tree root off the Makefile's path |
105 |
# |
106 |
root_path=`pwd` |
107 |
target_makefile=`expr $target_makefile : $root_path'/\(.*\)'` |
108 |
|
109 |
# Make sure config.status exists |
110 |
# |
111 |
if [ -f config.status ] |
112 |
then |
113 |
CONFIG_FILES=$target_makefile ./config.status |
114 |
else |
115 |
echo |
116 |
echo "There ain't no 'config.status' over here: $pwd" |
117 |
echo |
118 |
fi |