(file) Return to MakeMakefile.sh CVS log (file) (dir) Up to [OMI] / omi / mak

  1 mike  1.1 #!/bin/bash
  2           
  3           ##==============================================================================
  4           ##
  5           ## Check arguments
  6           ##
  7           ##==============================================================================
  8           
  9           if [ "$#" = "0" ]; then
 10               echo "Usage: $0 (lib|cshlib|cxxshlib|cprog|cxxprog) [OPTIONS]"
 11               echo "Try --help for help."
 12               exit 1
 13           fi
 14           
 15           case $1 in
 16               -*)
 17                   ;;
 18               *)
 19                   TYPE=$1
 20                   shift 1
 21           esac
 22 mike  1.1 
 23           ##==============================================================================
 24           ##
 25           ## Get command line arguments.
 26           ##
 27           ##==============================================================================
 28           
 29           for opt
 30           do
 31           
 32             arg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
 33           
 34             case $opt in
 35           
 36               -h | --help)
 37                 HELP=1
 38                 ;;
 39           
 40               --top=*)
 41                 TOP=$arg 
 42                 ;;
 43 mike  1.1 
 44               --project=*)
 45                 PROJECT=$arg 
 46                 ;;
 47           
 48               --guid=*)
 49                 GUID=$arg 
 50                 ;;
 51           
 52               --sources=*)
 53                 SOURCES=$arg 
 54                 ;;
 55           
 56               --headers=*)
 57                 HEADERS=$arg 
 58                 ;;
 59           
 60               --defines=*)
 61                 DEFINES=$arg 
 62                 ;;
 63           
 64 mike  1.1     --includes=*)
 65                 INCLUDES=$arg 
 66                 ;;
 67           
 68               --libraries=*)
 69                 LIBRARIES=$arg 
 70                 ;;
 71           
 72               *)
 73                 echo "$0: unknown option:  $opt"
 74                 exit 1
 75                 ;;
 76           
 77             esac
 78           done
 79           
 80           ##==============================================================================
 81           ##
 82           ## Print the help message
 83           ##
 84           ##==============================================================================
 85 mike  1.1 
 86           if [ "$HELP" = "1" ]; then
 87           
 88           cat<<EOF
 89           
 90           Usage: $0 (lib|cshlib|cxxshlib|cprog|cxxprog) [OPTIONS]
 91           
 92           OVERVIEW:
 93               This script generates a makefile (called 'GNUmakefile').
 94           
 95           OPTIONS:
 96               -h, --help  Print this help message.
 97               --top       Relative directory that contains 'configure' script.
 98               --project   Name of project (defaults to current directory name).
 99               --guid      GUID for this project (generated by default).
100               --sources   List of source files (defaults to *.c and *.cpp).
101               --headers   List of headers files (defaults to *.h).
102               --defines   List macros definitions.
103               --includes  List of include paths (relative to current directory).
104               --libraries List of dependent library names.
105           
106 mike  1.1 EOF
107           
108           exit 0
109           
110           fi
111           
112           ##==============================================================================
113           ##
114           ## $TYPE
115           ##
116           ##==============================================================================
117           
118           case $TYPE in
119               lib)
120                 TYPE=LIBRARY
121                 ;;
122               cshlib)
123                 TYPE=CSHLIBRARY
124                 ;;
125               cxxshlib)
126                 TYPE=CXXSHLIBRARY
127 mike  1.1       ;;
128               cprog)
129                 TYPE=CPROGRAM
130                 ;;
131               cxxprog)
132                 TYPE=CXXPROGRAM
133                 ;;
134               *)
135                 echo "$0: unknown or missing type argument: '$TYPE'"
136                 echo ""
137                 exit 1
138                 ;;
139           esac
140           
141           ##==============================================================================
142           ##
143           ## $TOP
144           ##
145           ##==============================================================================
146           
147           if [ "$TOP" == "" ]; then
148 mike  1.1     if [ -f "../configure" ]; then
149                   TOP=..
150               fi
151               if [ -f "../../configure" ]; then
152                   TOP=../..
153               fi
154               if [ -f "../../../configure" ]; then
155                   TOP=../../..
156               fi
157               if [ -f "../../../../configure" ]; then
158                   TOP=../../../..
159               fi
160               if [ -f "../../../../../configure" ]; then
161                   TOP=../../../../..
162               fi
163               if [ -f "../../../../../../configure" ]; then
164                   TOP=../../../../../..
165               fi
166               if [ -f "../../../../../../../configure" ]; then
167                   TOP=../../../../../../..
168               fi
169 mike  1.1 
170               if [ "$TOP" == "" ]; then
171                   echo "$0: unable to find top (please use --top option)"
172                   exit 1
173               fi
174           fi
175           
176           ##==============================================================================
177           ##
178           ## $PROJECT
179           ##
180           ##==============================================================================
181           
182           if [ "$PROJECT" = "" ]; then
183               TMP=`pwd`
184               PROJECT=`basename $TMP`
185           fi
186           
187           ##==============================================================================
188           ##
189           ## $GUID
190 mike  1.1 ##
191           ##==============================================================================
192           
193           if [ "$GUID" = "" ]; then
194               GUID=`uuidgen | tr abcdef ABCDEF`
195           fi
196           
197           ##==============================================================================
198           ##
199           ## $SOURCES
200           ##
201           ##==============================================================================
202           
203           if [ "$SOURCES" = "" ]; then
204               SOURCES="`ls *.c 2> /dev/null``ls *.cpp 2> /dev/null`"
205           fi
206           
207           ##==============================================================================
208           ##
209           ## $HEADERS
210           ##
211 mike  1.1 ##==============================================================================
212           
213           if [ "$HEADERS" = "" ]; then
214               HEADERS="`ls *.h 2> /dev/null`"
215           fi
216           
217           ##==============================================================================
218           ##
219           ## Write 'GNUmakefile'
220           ##
221           ##==============================================================================
222           
223           cat > GNUmakefile <<END
224           TOP = $TOP
225           include \$(TOP)/config.mak
226           
227           $TYPE = $PROJECT
228           
229           GUID = $GUID
230           
231           SOURCES = $SOURCES
232 mike  1.1 
233           HEADERS = $HEADERS
234           
235           DEFINES = $DEFINES
236           
237           INCLUDES = \$(TOP) \$(TOP)/common $INCLUDES
238           
239           LIBRARIES = $LIBRARIES
240           
241           include \$(TOP)/mak/rules.mak
242           END
243           
244           echo "Created GNUmakefile"

ViewCVS 0.9.2