macgenmcpxml.sh 14 KB

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