1#!/bin/sh 2 3################################################################################################# 4# Functions 5 6##### 7# WriteXMLHeader writes the beginning of the XML project file 8##### 9WriteXMLHeader() 10{ 11echo "<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>" 12echo "<?codewarrior exportversion="1.0.1" ideversion="4.1" ?>" 13echo "" 14echo "<!DOCTYPE PROJECT [" 15echo "<!ELEMENT PROJECT (TARGETLIST, TARGETORDER, GROUPLIST, DESIGNLIST?)>" 16echo "<!ELEMENT TARGETLIST (TARGET+)>" 17echo "<!ELEMENT TARGET (NAME, SETTINGLIST, FILELIST?, LINKORDER?, SEGMENTLIST?, OVERLAYGROUPLIST?, SUBTARGETLIST?, SUBPROJECTLIST?)>" 18echo "<!ELEMENT NAME (#PCDATA)>" 19echo "<!ELEMENT USERSOURCETREETYPE (#PCDATA)>" 20echo "<!ELEMENT PATH (#PCDATA)>" 21echo "<!ELEMENT FILELIST (FILE*)>" 22echo "<!ELEMENT FILE (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?, ROOTFILEREF?, FILEKIND?, FILEFLAGS?)>" 23echo "<!ELEMENT PATHTYPE (#PCDATA)>" 24echo "<!ELEMENT PATHROOT (#PCDATA)>" 25echo "<!ELEMENT ACCESSPATH (#PCDATA)>" 26echo "<!ELEMENT PATHFORMAT (#PCDATA)>" 27echo "<!ELEMENT ROOTFILEREF (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>" 28echo "<!ELEMENT FILEKIND (#PCDATA)>" 29echo "<!ELEMENT FILEFLAGS (#PCDATA)>" 30echo "<!ELEMENT FILEREF (TARGETNAME?, PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>" 31echo "<!ELEMENT TARGETNAME (#PCDATA)>" 32echo "<!ELEMENT SETTINGLIST ((SETTING|PANELDATA)+)>" 33echo "<!ELEMENT SETTING (NAME?, (VALUE|(SETTING+)))>" 34echo "<!ELEMENT PANELDATA (NAME, VALUE)>" 35echo "<!ELEMENT VALUE (#PCDATA)>" 36echo "<!ELEMENT LINKORDER (FILEREF*)>" 37echo "<!ELEMENT SEGMENTLIST (SEGMENT+)>" 38echo "<!ELEMENT SEGMENT (NAME, ATTRIBUTES?, FILEREF*)>" 39echo "<!ELEMENT ATTRIBUTES (#PCDATA)>" 40echo "<!ELEMENT OVERLAYGROUPLIST (OVERLAYGROUP+)>" 41echo "<!ELEMENT OVERLAYGROUP (NAME, BASEADDRESS, OVERLAY*)>" 42echo "<!ELEMENT BASEADDRESS (#PCDATA)>" 43echo "<!ELEMENT OVERLAY (NAME, FILEREF*)>" 44echo "<!ELEMENT SUBTARGETLIST (SUBTARGET+)>" 45echo "<!ELEMENT SUBTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>" 46echo "<!ELEMENT SUBPROJECTLIST (SUBPROJECT+)>" 47echo "<!ELEMENT SUBPROJECT (FILEREF, SUBPROJECTTARGETLIST)>" 48echo "<!ELEMENT SUBPROJECTTARGETLIST (SUBPROJECTTARGET*)>" 49echo "<!ELEMENT SUBPROJECTTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>" 50echo "<!ELEMENT TARGETORDER (ORDEREDTARGET|ORDEREDDESIGN)*>" 51echo "<!ELEMENT ORDEREDTARGET (NAME)>" 52echo "<!ELEMENT ORDEREDDESIGN (NAME, ORDEREDTARGET+)>" 53echo "<!ELEMENT GROUPLIST (GROUP|FILEREF)*>" 54echo "<!ELEMENT GROUP (NAME, (GROUP|FILEREF)*)>" 55echo "<!ELEMENT DESIGNLIST (DESIGN+)>" 56echo "<!ELEMENT DESIGN (NAME, DESIGNDATA)>" 57echo "<!ELEMENT DESIGNDATA (#PCDATA)>" 58echo "]>" 59echo "" 60} 61 62##### 63# WriteFILE generates a complete <FILE>...</FILE> entry 64##### 65WriteFILE() 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##### 79WriteFILEREF() 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##### 95WriteValueSetting() 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##### 108WritePathSetting() 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##### 129WriteSETTINGLIST() 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##### 298WriteTARGET() 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##### 329WriteGROUP() 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 352CFILES= 353while [ $# -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 362done 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 369LIBS="" 370CARBONLIBS="MSL_All_Carbon.Lib CarbonLib" 371CLASSICLIBS="MSL_All_PPC.Lib InterfaceLib FontManager MathLib" 372CLASSICLIBS="$CLASSICLIBS TextCommon UnicodeConverter UTCUtils" 373 374##### 375# 376##### 377 378GSNAME="GhostscriptLib" 379CLASSICGSNAME="$GSNAME PPC" 380CARBONGSNAME="$GSNAME Carbon" 381CLASSICDEBUGTARGETNAME="$CLASSICGSNAME (Debug)" 382CLASSICFINALTARGETNAME="$CLASSICGSNAME (Final)" 383CARBONDEBUGTARGETNAME="$CARBONGSNAME (Debug)" 384CARBONFINALTARGETNAME="$CARBONGSNAME (Final)" 385 386WriteXMLHeader 387 388echo "<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 421echo "</PROJECT>" 422 423exit 0 424