Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#!/bin/sh
2
 
3
#################################################################################################
4
# Functions
5
 
6
#####
7
# WriteXMLHeader writes the beginning of the XML project file
8
#####
9
WriteXMLHeader()
10
{
11
echo "<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>"
12
echo "<?codewarrior exportversion="1.0.1" ideversion="4.1" ?>"
13
echo ""
14
echo "<!DOCTYPE PROJECT ["
15
echo "<!ELEMENT PROJECT (TARGETLIST, TARGETORDER, GROUPLIST, DESIGNLIST?)>"
16
echo "<!ELEMENT TARGETLIST (TARGET+)>"
17
echo "<!ELEMENT TARGET (NAME, SETTINGLIST, FILELIST?, LINKORDER?, SEGMENTLIST?, OVERLAYGROUPLIST?, SUBTARGETLIST?, SUBPROJECTLIST?)>"
18
echo "<!ELEMENT NAME (#PCDATA)>"
19
echo "<!ELEMENT USERSOURCETREETYPE (#PCDATA)>"
20
echo "<!ELEMENT PATH (#PCDATA)>"
21
echo "<!ELEMENT FILELIST (FILE*)>"
22
echo "<!ELEMENT FILE (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?, ROOTFILEREF?, FILEKIND?, FILEFLAGS?)>"
23
echo "<!ELEMENT PATHTYPE (#PCDATA)>"
24
echo "<!ELEMENT PATHROOT (#PCDATA)>"
25
echo "<!ELEMENT ACCESSPATH (#PCDATA)>"
26
echo "<!ELEMENT PATHFORMAT (#PCDATA)>"
27
echo "<!ELEMENT ROOTFILEREF (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>"
28
echo "<!ELEMENT FILEKIND (#PCDATA)>"
29
echo "<!ELEMENT FILEFLAGS (#PCDATA)>"
30
echo "<!ELEMENT FILEREF (TARGETNAME?, PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>"
31
echo "<!ELEMENT TARGETNAME (#PCDATA)>"
32
echo "<!ELEMENT SETTINGLIST ((SETTING|PANELDATA)+)>"
33
echo "<!ELEMENT SETTING (NAME?, (VALUE|(SETTING+)))>"
34
echo "<!ELEMENT PANELDATA (NAME, VALUE)>"
35
echo "<!ELEMENT VALUE (#PCDATA)>"
36
echo "<!ELEMENT LINKORDER (FILEREF*)>"
37
echo "<!ELEMENT SEGMENTLIST (SEGMENT+)>"
38
echo "<!ELEMENT SEGMENT (NAME, ATTRIBUTES?, FILEREF*)>"
39
echo "<!ELEMENT ATTRIBUTES (#PCDATA)>"
40
echo "<!ELEMENT OVERLAYGROUPLIST (OVERLAYGROUP+)>"
41
echo "<!ELEMENT OVERLAYGROUP (NAME, BASEADDRESS, OVERLAY*)>"
42
echo "<!ELEMENT BASEADDRESS (#PCDATA)>"
43
echo "<!ELEMENT OVERLAY (NAME, FILEREF*)>"
44
echo "<!ELEMENT SUBTARGETLIST (SUBTARGET+)>"
45
echo "<!ELEMENT SUBTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>"
46
echo "<!ELEMENT SUBPROJECTLIST (SUBPROJECT+)>"
47
echo "<!ELEMENT SUBPROJECT (FILEREF, SUBPROJECTTARGETLIST)>"
48
echo "<!ELEMENT SUBPROJECTTARGETLIST (SUBPROJECTTARGET*)>"
49
echo "<!ELEMENT SUBPROJECTTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>"
50
echo "<!ELEMENT TARGETORDER (ORDEREDTARGET|ORDEREDDESIGN)*>"
51
echo "<!ELEMENT ORDEREDTARGET (NAME)>"
52
echo "<!ELEMENT ORDEREDDESIGN (NAME, ORDEREDTARGET+)>"
53
echo "<!ELEMENT GROUPLIST (GROUP|FILEREF)*>"
54
echo "<!ELEMENT GROUP (NAME, (GROUP|FILEREF)*)>"
55
echo "<!ELEMENT DESIGNLIST (DESIGN+)>"
56
echo "<!ELEMENT DESIGN (NAME, DESIGNDATA)>"
57
echo "<!ELEMENT DESIGNDATA (#PCDATA)>"
58
echo "]>"
59
echo ""
60
}
61
 
62
#####
63
# WriteFILE generates a complete <FILE>...</FILE> entry
64
#####
65
WriteFILE()
66
{
67
    echo "<FILE>"
68
    echo "	<PATHTYPE>Name</PATHTYPE>"
69
    echo "	<PATH>$1</PATH>"
70
    echo "	<PATHFORMAT>MacOS</PATHFORMAT>"
71
    echo "	<FILEKIND>Text</FILEKIND>"
72
    echo "	<FILEFLAGS>Debug</FILEFLAGS>"
73
    echo "</FILE>"
74
}
75
 
76
#####
77
# WriteFILEREF generates a complete <FILEREF>...</FILEREF> entry
78
#####
79
WriteFILEREF()
80
{
81
    echo "<FILEREF>"
82
    if [ $# -ge 2 ]; then
83
    echo "	<TARGETNAME>$2</TARGETNAME>"
84
    fi
85
    echo "	<PATHTYPE>Name</PATHTYPE>"
86
    echo "	<PATH>$1</PATH>"
87
    echo "	<PATHFORMAT>MacOS</PATHFORMAT>"
88
    echo "</FILEREF>"
89
}
90
 
91
 
92
#####
93
# WriteValueSetting generates a complete value entry
94
#####
95
WriteValueSetting()
96
{
97
    SETTINGNAME=$1
98
    VALUE=$2
99
 
100
    echo "<SETTING><NAME>$SETTINGNAME</NAME><VALUE>$VALUE</VALUE></SETTING>"
101
}
102
 
103
 
104
 
105
#####
106
# WritePathSetting generates a complete path entry
107
#####
108
WritePathSetting()
109
{
110
    SETTINGNAME=$1
111
    PATH=$2
112
    PATHFORMAT=$3
113
    PATHROOT=$4
114
 
115
    echo "<SETTING>"
116
        echo "<SETTING><NAME>$SETTINGNAME</NAME>"
117
            echo "<SETTING><NAME>Path</NAME><VALUE>$PATH</VALUE></SETTING>"
118
            echo "<SETTING><NAME>PathFormat</NAME><VALUE>$PATHFORMAT</VALUE></SETTING>"
119
            echo "<SETTING><NAME>PathRoot</NAME><VALUE>$PATHROOT</VALUE></SETTING>"
120
        echo "</SETTING>"
121
        echo "<SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING>"
122
        echo "<SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>"
123
    echo "</SETTING>"
124
}
125
 
126
#####
127
# WriteSETTINGLIST generates a complete <SETTINGLIST>...</SETTINGLIST> entry
128
#####
129
WriteSETTINGLIST()
130
{
131
    TARGETNAME=$1
132
    OUTPUTNAME=$2
133
 
134
    echo "<SETTINGLIST>"
135
 
136
        echo "<!-- Settings for "Target Settings" panel -->"
137
        WriteValueSetting Linker "MacOS PPC Linker"
138
        WriteValueSetting PreLinker ""
139
        WriteValueSetting PostLinker ""
140
        WriteValueSetting Targetname "$TARGETNAME"
141
        echo "<SETTING><NAME>OutputDirectory</NAME>"
142
            echo "<SETTING><NAME>Path</NAME><VALUE>:Output:</VALUE></SETTING>"
143
            echo "<SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>"
144
            echo "<SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>"
145
        echo "</SETTING>"
146
        WriteValueSetting SaveEntriesUsingRelativePaths false
147
 
148
        echo "<!-- Settings for "Access Paths" panel -->"
149
        WriteValueSetting AlwaysSearchUserPaths false
150
        WriteValueSetting InterpretDOSAndUnixPaths true
151
        echo "<SETTING><NAME>UserSearchPaths</NAME>"
152
            WritePathSetting SearchPath ":src:" MacOS Project
153
            WritePathSetting SearchPath ":obj:" MacOS Project
154
            WritePathSetting SearchPath ":" MacOS Project
155
        echo "</SETTING>"
156
        echo "<SETTING><NAME>SystemSearchPaths</NAME>"
157
            WritePathSetting SearchPath ":jbig2dec:" MacOS Project
158
            WritePathSetting SearchPath ":jasper/src/libjasper/include:" MacOS Project
159
            WritePathSetting SearchPath ":obj:" MacOS Project
160
            WritePathSetting SearchPath ":MacOS Support:" MacOS CodeWarrior
161
            WritePathSetting SearchPath ":MSL:MSL_C" MacOS CodeWarrior
162
            WritePathSetting SearchPath ":" MacOS CodeWarrior
163
            WritePathSetting SearchPath ":" MacOS Project
164
        echo "</SETTING>"
165
 
166
        echo "<!-- Settings for "Build Extras" panel -->"
167
        WriteValueSetting CacheModDates true
168
	WriteValueSetting ActivateBrowser true
169
	WriteValueSetting DumpBrowserInfo false
170
	WriteValueSetting CacheSubprojects true
171
 
172
	echo "<!-- Settings for "PPC Project" panel -->"
173
	WriteValueSetting MWProject_PPC_type SharedLibrary
174
	WriteValueSetting MWProject_PPC_outfile "$OUTPUTNAME"
175
	WriteValueSetting MWProject_PPC_filecreator 1061109567
176
	WriteValueSetting MWProject_PPC_filetype 1936223330
177
	WriteValueSetting MWProject_PPC_size 0
178
	WriteValueSetting MWProject_PPC_minsize 0
179
	WriteValueSetting MWProject_PPC_stacksize 0
180
	WriteValueSetting MWProject_PPC_flags 0
181
	WriteValueSetting MWProject_PPC_symfilename ""
182
	WriteValueSetting MWProject_PPC_rsrcname ""
183
	WriteValueSetting MWProject_PPC_rsrcheader Native
184
	WriteValueSetting MWProject_PPC_rsrctype 1061109567
185
	WriteValueSetting MWProject_PPC_rsrcid 0
186
	WriteValueSetting MWProject_PPC_rsrcflags 0
187
	WriteValueSetting MWProject_PPC_rsrcstore 0
188
	WriteValueSetting MWProject_PPC_rsrcmerge 0
189
 
190
	echo "<!-- Settings for "C/C++ Compiler" panel -->"
191
	WriteValueSetting MWFrontEnd_C_cplusplus 0
192
	WriteValueSetting MWFrontEnd_C_checkprotos 0
193
	WriteValueSetting MWFrontEnd_C_arm 0
194
	WriteValueSetting MWFrontEnd_C_trigraphs 0
195
	WriteValueSetting MWFrontEnd_C_onlystdkeywords 0
196
	WriteValueSetting MWFrontEnd_C_enumsalwaysint 0
197
	WriteValueSetting MWFrontEnd_C_mpwpointerstyle 1
198
 
199
	# install the carbon prefix file for carbon targets
200
	if test "$OUTPUTNAME" = "GhostscriptLib Carbon"; then
201
	  if test "$TARGETNAME" = "GhostscriptLib Carbon (Debug)"; then
202
	    WriteValueSetting MWFrontEnd_C_prefixname macos_carbon_d_pre.h
203
	  else
204
	    WriteValueSetting MWFrontEnd_C_prefixname macos_carbon_pre.h
205
	  fi
206
	else
207
	  if test "$TARGETNAME" = "GhostscriptLib PPC (Debug)"; then
208
	    WriteValueSetting MWFrontEnd_C_prefixname macos_classic_d_pre.h
209
	  else
210
	    WriteValueSetting MWFrontEnd_C_prefixname
211
	  fi
212
	fi
213
 
214
	WriteValueSetting MWFrontEnd_C_ansistrict 0
215
	WriteValueSetting MWFrontEnd_C_mpwcnewline 0
216
	WriteValueSetting MWFrontEnd_C_wchar_type 1
217
	WriteValueSetting MWFrontEnd_C_enableexceptions 0
218
	WriteValueSetting MWFrontEnd_C_dontreusestrings 0
219
	WriteValueSetting MWFrontEnd_C_poolstrings 0
220
	WriteValueSetting MWFrontEnd_C_dontinline 1
221
	WriteValueSetting MWFrontEnd_C_useRTTI 0
222
	WriteValueSetting MWFrontEnd_C_multibyteaware 0
223
	WriteValueSetting MWFrontEnd_C_unsignedchars 0
224
	WriteValueSetting MWFrontEnd_C_autoinline 0
225
	WriteValueSetting MWFrontEnd_C_booltruefalse 0
226
	WriteValueSetting MWFrontEnd_C_direct_to_som 0
227
	WriteValueSetting MWFrontEnd_C_som_env_check 0
228
	WriteValueSetting MWFrontEnd_C_alwaysinline 0
229
	WriteValueSetting MWFrontEnd_C_inlinelevel 0
230
	WriteValueSetting MWFrontEnd_C_ecplusplus 0
231
	WriteValueSetting MWFrontEnd_C_objective_c 0
232
	WriteValueSetting MWFrontEnd_C_defer_codegen 0
233
 
234
	echo "<!-- Settings for "C/C++ Warnings" panel -->"
235
	WriteValueSetting MWWarning_C_warn_illpragma 1
236
	WriteValueSetting MWWarning_C_warn_emptydecl 0
237
	WriteValueSetting MWWarning_C_warn_possunwant 0
238
	WriteValueSetting MWWarning_C_warn_unusedvar 1
239
	WriteValueSetting MWWarning_C_warn_unusedarg 0
240
	WriteValueSetting MWWarning_C_warn_extracomma 1
241
	WriteValueSetting MWWarning_C_pedantic 1
242
	WriteValueSetting MWWarning_C_warningerrors 0
243
	WriteValueSetting MWWarning_C_warn_hidevirtual 1
244
	WriteValueSetting MWWarning_C_warn_implicitconv 0
245
	WriteValueSetting MWWarning_C_warn_notinlined 0
246
	WriteValueSetting MWWarning_C_warn_structclass 0
247
 
248
	echo "<!-- Settings for "PPC CodeGen" panel -->"
249
	WriteValueSetting MWCodeGen_PPC_structalignment PPC
250
	WriteValueSetting MWCodeGen_PPC_tracebacktables Inline
251
	WriteValueSetting MWCodeGen_PPC_processor Generic
252
	WriteValueSetting MWCodeGen_PPC_readonlystrings 0
253
	WriteValueSetting MWCodeGen_PPC_tocdata 1
254
	WriteValueSetting MWCodeGen_PPC_profiler 0
255
	WriteValueSetting MWCodeGen_PPC_fpcontract 0
256
	WriteValueSetting MWCodeGen_PPC_schedule 1
257
	WriteValueSetting MWCodeGen_PPC_peephole 1
258
	WriteValueSetting MWCodeGen_PPC_processorspecific 0
259
	WriteValueSetting MWCodeGen_PPC_altivec 0
260
	WriteValueSetting MWCodeGen_PPC_vectortocdata 0
261
	WriteValueSetting MWCodeGen_PPC_vrsave 0
262
 
263
	echo "<!-- Settings for "PPC Global Optimizer" panel -->"
264
	WriteValueSetting GlobalOptimizer_PPC_optimizationlevel Level0
265
	WriteValueSetting GlobalOptimizer_PPC_optfor Speed
266
 
267
	echo "<!-- Settings for "PPC Linker" panel -->"
268
	WriteValueSetting MWLinker_PPC_linksym 1
269
	WriteValueSetting MWLinker_PPC_symfullpath 1
270
	WriteValueSetting MWLinker_PPC_linkmap 0
271
	WriteValueSetting MWLinker_PPC_nolinkwarnings 0
272
	WriteValueSetting MWLinker_PPC_dontdeadstripinitcode 0
273
	WriteValueSetting MWLinker_PPC_permitmultdefs 0
274
	WriteValueSetting MWLinker_PPC_linkmode Fast
275
	WriteValueSetting MWLinker_PPC_initname "__initialize"
276
	WriteValueSetting MWLinker_PPC_mainname ""
277
	WriteValueSetting MWLinker_PPC_termname "__terminate"
278
 
279
	echo "<!-- Settings for "PPC PEF" panel -->"
280
	WriteValueSetting MWPEF_exports Pragma
281
	WriteValueSetting MWPEF_libfolder 0
282
	WriteValueSetting MWPEF_sortcode None
283
	WriteValueSetting MWPEF_expandbss 0
284
	WriteValueSetting MWPEF_sharedata 0
285
	WriteValueSetting MWPEF_olddefversion 0
286
	WriteValueSetting MWPEF_oldimpversion 0
287
	WriteValueSetting MWPEF_currentversion 0
288
	WriteValueSetting MWPEF_fragmentname ""
289
	WriteValueSetting MWPEF_collapsereloads 0
290
 
291
    echo "</SETTINGLIST>"
292
}
293
 
294
 
295
#####
296
# WriteTARGET generates a complete <TARGET>...</TARGET> entry
297
#####
298
WriteTARGET()
299
{
300
    TARGETNAME=$1
301
    OUTPUTNAME=$2
302
    shift 2
303
 
304
    echo "<TARGET>"
305
 
306
        echo "<NAME>$TARGETNAME</NAME>"
307
 
308
        WriteSETTINGLIST "$TARGETNAME" "$OUTPUTNAME"
309
 
310
        echo "<FILELIST>"
311
            for file in "$@"; do
312
                WriteFILE "$file"
313
            done
314
        echo "</FILELIST>"
315
 
316
        echo "<LINKORDER>"
317
            for file in "$@"; do
318
                WriteFILEREF "$file"
319
            done
320
        echo "</LINKORDER>"
321
 
322
    echo "</TARGET>"
323
}
324
 
325
 
326
#####
327
# WriteGROUP generates a complete <GROUP>...</GROUP> entry
328
#####
329
WriteGROUP()
330
{
331
    GROUPNAME=$1
332
    TARGETNAME=$2
333
    shift 2
334
 
335
    echo "<GROUP><NAME>$GROUPNAME</NAME>"
336
 
337
        for file in "$@"; do
338
            WriteFILEREF "$file" "$TARGETNAME"
339
        done
340
 
341
    echo "</GROUP>"
342
}
343
 
344
 
345
#################################################################################################
346
# the start of the script
347
 
348
#####
349
# first create a list of .c files that will be part of the project, we need it several times
350
#####
351
 
352
CFILES=
353
while [ $# -ge 1 ]; do
354
    case $1 in
355
        \\);;
356
        *.o)
357
            # strip path before file name and convert .o to .c, then append file name to CFILES
358
            CFILES=$CFILES\ `echo $1 | sed -e 's/\.\/.*\///' -e 's/\.\///' -e 's/\.o/\.c/'`
359
            ;;
360
    esac
361
    shift
362
done
363
 
364
# libs for codewarrior 6
365
#LIBS="console.stubs.c MSL\ ShLibRuntime.Lib MSL\ RuntimePPC.Lib"
366
#CLASSICLIBS="MSL\ C.PPC.Lib InterfaceLib FontManager MathLib"
367
 
368
# libs for codewarrior 7 & 8
369
LIBS=""
370
CARBONLIBS="MSL_All_Carbon.Lib CarbonLib"
371
CLASSICLIBS="MSL_All_PPC.Lib InterfaceLib FontManager MathLib"
372
CLASSICLIBS="$CLASSICLIBS TextCommon UnicodeConverter UTCUtils"
373
 
374
#####
375
# 
376
#####
377
 
378
GSNAME="GhostscriptLib"
379
CLASSICGSNAME="$GSNAME PPC"
380
CARBONGSNAME="$GSNAME Carbon"
381
CLASSICDEBUGTARGETNAME="$CLASSICGSNAME (Debug)"
382
CLASSICFINALTARGETNAME="$CLASSICGSNAME (Final)"
383
CARBONDEBUGTARGETNAME="$CARBONGSNAME (Debug)"
384
CARBONFINALTARGETNAME="$CARBONGSNAME (Final)"
385
 
386
WriteXMLHeader
387
 
388
echo "<PROJECT>"
389
 
390
    echo "<TARGETLIST>"
391
    WriteTARGET "$CARBONDEBUGTARGETNAME" "$CARBONGSNAME" $CFILES $LIBS $CARBONLIBS
392
    WriteTARGET "$CLASSICDEBUGTARGETNAME" "$CLASSICGSNAME" $CFILES $LIBS $CLASSICLIBS
393
    echo "</TARGETLIST>"
394
 
395
    echo "<TARGETORDER>"
396
        echo "<ORDEREDTARGET><NAME>$CARBONDEBUGTARGETNAME</NAME></ORDEREDTARGET>"
397
        echo "<ORDEREDTARGET><NAME>$CLASSICDEBUGTARGETNAME</NAME></ORDEREDTARGET>"
398
    echo "</TARGETORDER>"
399
 
400
    echo "<GROUPLIST>"
401
        WriteGROUP "Ghostscript Sources" "$CARBONDEBUGTARGETNAME" $CFILES
402
#        WriteGROUP "Libraries" "$CARBONDEBUGTARGETNAME" $LIBS $CARBONLIBS $CLASSICLIBS
403
#        WriteGROUP "Libraries" "$CARBONDEBUGTARGETNAME" "console.stubs.c" "MSL ShLibRuntime.Lib" "MSL RuntimePPC.Lib" "MSL C.Carbon.Lib" "CarbonLib" "MSL C.PPC.Lib" "InterfaceLib" "FontManager" "MathLib"
404
 
405
# nb: this code doesn't work if there are spaces in the library filenames        
406
        echo "<GROUP><NAME>Libraries</NAME>"
407
	for lib in $LIBS; do
408
            WriteFILEREF "$lib" "$CARBONDEBUGTARGETNAME"
409
	    WriteFILEREF "$lib" "$CLASSICDEBUGTARGETNAME"
410
	done
411
	for lib in $CARBONLIBS; do
412
            WriteFILEREF "$lib" "$CARBONDEBUGTARGETNAME"
413
	done
414
	for lib in $CLASSICLIBS; do
415
            WriteFILEREF "$lib" "$CLASSICDEBUGTARGETNAME"
416
	done
417
        echo "</GROUP>"
418
 
419
    echo "</GROUPLIST>"
420
 
421
echo "</PROJECT>"
422
 
423
exit 0