123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423 |
- #!/bin/sh
- #################################################################################################
- # Functions
- #####
- # WriteXMLHeader writes the beginning of the XML project file
- #####
- WriteXMLHeader()
- {
- echo "<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>"
- echo "<?codewarrior exportversion="1.0.1" ideversion="4.1" ?>"
- echo ""
- echo "<!DOCTYPE PROJECT ["
- echo "<!ELEMENT PROJECT (TARGETLIST, TARGETORDER, GROUPLIST, DESIGNLIST?)>"
- echo "<!ELEMENT TARGETLIST (TARGET+)>"
- echo "<!ELEMENT TARGET (NAME, SETTINGLIST, FILELIST?, LINKORDER?, SEGMENTLIST?, OVERLAYGROUPLIST?, SUBTARGETLIST?, SUBPROJECTLIST?)>"
- echo "<!ELEMENT NAME (#PCDATA)>"
- echo "<!ELEMENT USERSOURCETREETYPE (#PCDATA)>"
- echo "<!ELEMENT PATH (#PCDATA)>"
- echo "<!ELEMENT FILELIST (FILE*)>"
- echo "<!ELEMENT FILE (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?, ROOTFILEREF?, FILEKIND?, FILEFLAGS?)>"
- echo "<!ELEMENT PATHTYPE (#PCDATA)>"
- echo "<!ELEMENT PATHROOT (#PCDATA)>"
- echo "<!ELEMENT ACCESSPATH (#PCDATA)>"
- echo "<!ELEMENT PATHFORMAT (#PCDATA)>"
- echo "<!ELEMENT ROOTFILEREF (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>"
- echo "<!ELEMENT FILEKIND (#PCDATA)>"
- echo "<!ELEMENT FILEFLAGS (#PCDATA)>"
- echo "<!ELEMENT FILEREF (TARGETNAME?, PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)>"
- echo "<!ELEMENT TARGETNAME (#PCDATA)>"
- echo "<!ELEMENT SETTINGLIST ((SETTING|PANELDATA)+)>"
- echo "<!ELEMENT SETTING (NAME?, (VALUE|(SETTING+)))>"
- echo "<!ELEMENT PANELDATA (NAME, VALUE)>"
- echo "<!ELEMENT VALUE (#PCDATA)>"
- echo "<!ELEMENT LINKORDER (FILEREF*)>"
- echo "<!ELEMENT SEGMENTLIST (SEGMENT+)>"
- echo "<!ELEMENT SEGMENT (NAME, ATTRIBUTES?, FILEREF*)>"
- echo "<!ELEMENT ATTRIBUTES (#PCDATA)>"
- echo "<!ELEMENT OVERLAYGROUPLIST (OVERLAYGROUP+)>"
- echo "<!ELEMENT OVERLAYGROUP (NAME, BASEADDRESS, OVERLAY*)>"
- echo "<!ELEMENT BASEADDRESS (#PCDATA)>"
- echo "<!ELEMENT OVERLAY (NAME, FILEREF*)>"
- echo "<!ELEMENT SUBTARGETLIST (SUBTARGET+)>"
- echo "<!ELEMENT SUBTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>"
- echo "<!ELEMENT SUBPROJECTLIST (SUBPROJECT+)>"
- echo "<!ELEMENT SUBPROJECT (FILEREF, SUBPROJECTTARGETLIST)>"
- echo "<!ELEMENT SUBPROJECTTARGETLIST (SUBPROJECTTARGET*)>"
- echo "<!ELEMENT SUBPROJECTTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)>"
- echo "<!ELEMENT TARGETORDER (ORDEREDTARGET|ORDEREDDESIGN)*>"
- echo "<!ELEMENT ORDEREDTARGET (NAME)>"
- echo "<!ELEMENT ORDEREDDESIGN (NAME, ORDEREDTARGET+)>"
- echo "<!ELEMENT GROUPLIST (GROUP|FILEREF)*>"
- echo "<!ELEMENT GROUP (NAME, (GROUP|FILEREF)*)>"
- echo "<!ELEMENT DESIGNLIST (DESIGN+)>"
- echo "<!ELEMENT DESIGN (NAME, DESIGNDATA)>"
- echo "<!ELEMENT DESIGNDATA (#PCDATA)>"
- echo "]>"
- echo ""
- }
- #####
- # WriteFILE generates a complete <FILE>...</FILE> entry
- #####
- WriteFILE()
- {
- echo "<FILE>"
- echo " <PATHTYPE>Name</PATHTYPE>"
- echo " <PATH>$1</PATH>"
- echo " <PATHFORMAT>MacOS</PATHFORMAT>"
- echo " <FILEKIND>Text</FILEKIND>"
- echo " <FILEFLAGS>Debug</FILEFLAGS>"
- echo "</FILE>"
- }
- #####
- # WriteFILEREF generates a complete <FILEREF>...</FILEREF> entry
- #####
- WriteFILEREF()
- {
- echo "<FILEREF>"
- if [ $# -ge 2 ]; then
- echo " <TARGETNAME>$2</TARGETNAME>"
- fi
- echo " <PATHTYPE>Name</PATHTYPE>"
- echo " <PATH>$1</PATH>"
- echo " <PATHFORMAT>MacOS</PATHFORMAT>"
- echo "</FILEREF>"
- }
- #####
- # WriteValueSetting generates a complete value entry
- #####
- WriteValueSetting()
- {
- SETTINGNAME=$1
- VALUE=$2
-
- echo "<SETTING><NAME>$SETTINGNAME</NAME><VALUE>$VALUE</VALUE></SETTING>"
- }
- #####
- # WritePathSetting generates a complete path entry
- #####
- WritePathSetting()
- {
- SETTINGNAME=$1
- PATH=$2
- PATHFORMAT=$3
- PATHROOT=$4
-
- echo "<SETTING>"
- echo "<SETTING><NAME>$SETTINGNAME</NAME>"
- echo "<SETTING><NAME>Path</NAME><VALUE>$PATH</VALUE></SETTING>"
- echo "<SETTING><NAME>PathFormat</NAME><VALUE>$PATHFORMAT</VALUE></SETTING>"
- echo "<SETTING><NAME>PathRoot</NAME><VALUE>$PATHROOT</VALUE></SETTING>"
- echo "</SETTING>"
- echo "<SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING>"
- echo "<SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>"
- echo "</SETTING>"
- }
- #####
- # WriteSETTINGLIST generates a complete <SETTINGLIST>...</SETTINGLIST> entry
- #####
- WriteSETTINGLIST()
- {
- TARGETNAME=$1
- OUTPUTNAME=$2
-
- echo "<SETTINGLIST>"
-
- echo "<!-- Settings for "Target Settings" panel -->"
- WriteValueSetting Linker "MacOS PPC Linker"
- WriteValueSetting PreLinker ""
- WriteValueSetting PostLinker ""
- WriteValueSetting Targetname "$TARGETNAME"
- echo "<SETTING><NAME>OutputDirectory</NAME>"
- echo "<SETTING><NAME>Path</NAME><VALUE>:Output:</VALUE></SETTING>"
- echo "<SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>"
- echo "<SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>"
- echo "</SETTING>"
- WriteValueSetting SaveEntriesUsingRelativePaths false
-
- echo "<!-- Settings for "Access Paths" panel -->"
- WriteValueSetting AlwaysSearchUserPaths false
- WriteValueSetting InterpretDOSAndUnixPaths true
- echo "<SETTING><NAME>UserSearchPaths</NAME>"
- WritePathSetting SearchPath ":src:" MacOS Project
- WritePathSetting SearchPath ":obj:" MacOS Project
- WritePathSetting SearchPath ":" MacOS Project
- echo "</SETTING>"
- echo "<SETTING><NAME>SystemSearchPaths</NAME>"
- WritePathSetting SearchPath ":jbig2dec:" MacOS Project
- WritePathSetting SearchPath ":jasper/src/libjasper/include:" MacOS Project
- WritePathSetting SearchPath ":obj:" MacOS Project
- WritePathSetting SearchPath ":MacOS Support:" MacOS CodeWarrior
- WritePathSetting SearchPath ":MSL:MSL_C" MacOS CodeWarrior
- WritePathSetting SearchPath ":" MacOS CodeWarrior
- WritePathSetting SearchPath ":" MacOS Project
- echo "</SETTING>"
-
- echo "<!-- Settings for "Build Extras" panel -->"
- WriteValueSetting CacheModDates true
- WriteValueSetting ActivateBrowser true
- WriteValueSetting DumpBrowserInfo false
- WriteValueSetting CacheSubprojects true
-
- echo "<!-- Settings for "PPC Project" panel -->"
- WriteValueSetting MWProject_PPC_type SharedLibrary
- WriteValueSetting MWProject_PPC_outfile "$OUTPUTNAME"
- WriteValueSetting MWProject_PPC_filecreator 1061109567
- WriteValueSetting MWProject_PPC_filetype 1936223330
- WriteValueSetting MWProject_PPC_size 0
- WriteValueSetting MWProject_PPC_minsize 0
- WriteValueSetting MWProject_PPC_stacksize 0
- WriteValueSetting MWProject_PPC_flags 0
- WriteValueSetting MWProject_PPC_symfilename ""
- WriteValueSetting MWProject_PPC_rsrcname ""
- WriteValueSetting MWProject_PPC_rsrcheader Native
- WriteValueSetting MWProject_PPC_rsrctype 1061109567
- WriteValueSetting MWProject_PPC_rsrcid 0
- WriteValueSetting MWProject_PPC_rsrcflags 0
- WriteValueSetting MWProject_PPC_rsrcstore 0
- WriteValueSetting MWProject_PPC_rsrcmerge 0
-
- echo "<!-- Settings for "C/C++ Compiler" panel -->"
- WriteValueSetting MWFrontEnd_C_cplusplus 0
- WriteValueSetting MWFrontEnd_C_checkprotos 0
- WriteValueSetting MWFrontEnd_C_arm 0
- WriteValueSetting MWFrontEnd_C_trigraphs 0
- WriteValueSetting MWFrontEnd_C_onlystdkeywords 0
- WriteValueSetting MWFrontEnd_C_enumsalwaysint 0
- WriteValueSetting MWFrontEnd_C_mpwpointerstyle 1
-
- # install the carbon prefix file for carbon targets
- if test "$OUTPUTNAME" = "GhostscriptLib Carbon"; then
- if test "$TARGETNAME" = "GhostscriptLib Carbon (Debug)"; then
- WriteValueSetting MWFrontEnd_C_prefixname macos_carbon_d_pre.h
- else
- WriteValueSetting MWFrontEnd_C_prefixname macos_carbon_pre.h
- fi
- else
- if test "$TARGETNAME" = "GhostscriptLib PPC (Debug)"; then
- WriteValueSetting MWFrontEnd_C_prefixname macos_classic_d_pre.h
- else
- WriteValueSetting MWFrontEnd_C_prefixname
- fi
- fi
-
- WriteValueSetting MWFrontEnd_C_ansistrict 0
- WriteValueSetting MWFrontEnd_C_mpwcnewline 0
- WriteValueSetting MWFrontEnd_C_wchar_type 1
- WriteValueSetting MWFrontEnd_C_enableexceptions 0
- WriteValueSetting MWFrontEnd_C_dontreusestrings 0
- WriteValueSetting MWFrontEnd_C_poolstrings 0
- WriteValueSetting MWFrontEnd_C_dontinline 1
- WriteValueSetting MWFrontEnd_C_useRTTI 0
- WriteValueSetting MWFrontEnd_C_multibyteaware 0
- WriteValueSetting MWFrontEnd_C_unsignedchars 0
- WriteValueSetting MWFrontEnd_C_autoinline 0
- WriteValueSetting MWFrontEnd_C_booltruefalse 0
- WriteValueSetting MWFrontEnd_C_direct_to_som 0
- WriteValueSetting MWFrontEnd_C_som_env_check 0
- WriteValueSetting MWFrontEnd_C_alwaysinline 0
- WriteValueSetting MWFrontEnd_C_inlinelevel 0
- WriteValueSetting MWFrontEnd_C_ecplusplus 0
- WriteValueSetting MWFrontEnd_C_objective_c 0
- WriteValueSetting MWFrontEnd_C_defer_codegen 0
-
- echo "<!-- Settings for "C/C++ Warnings" panel -->"
- WriteValueSetting MWWarning_C_warn_illpragma 1
- WriteValueSetting MWWarning_C_warn_emptydecl 0
- WriteValueSetting MWWarning_C_warn_possunwant 0
- WriteValueSetting MWWarning_C_warn_unusedvar 1
- WriteValueSetting MWWarning_C_warn_unusedarg 0
- WriteValueSetting MWWarning_C_warn_extracomma 1
- WriteValueSetting MWWarning_C_pedantic 1
- WriteValueSetting MWWarning_C_warningerrors 0
- WriteValueSetting MWWarning_C_warn_hidevirtual 1
- WriteValueSetting MWWarning_C_warn_implicitconv 0
- WriteValueSetting MWWarning_C_warn_notinlined 0
- WriteValueSetting MWWarning_C_warn_structclass 0
-
- echo "<!-- Settings for "PPC CodeGen" panel -->"
- WriteValueSetting MWCodeGen_PPC_structalignment PPC
- WriteValueSetting MWCodeGen_PPC_tracebacktables Inline
- WriteValueSetting MWCodeGen_PPC_processor Generic
- WriteValueSetting MWCodeGen_PPC_readonlystrings 0
- WriteValueSetting MWCodeGen_PPC_tocdata 1
- WriteValueSetting MWCodeGen_PPC_profiler 0
- WriteValueSetting MWCodeGen_PPC_fpcontract 0
- WriteValueSetting MWCodeGen_PPC_schedule 1
- WriteValueSetting MWCodeGen_PPC_peephole 1
- WriteValueSetting MWCodeGen_PPC_processorspecific 0
- WriteValueSetting MWCodeGen_PPC_altivec 0
- WriteValueSetting MWCodeGen_PPC_vectortocdata 0
- WriteValueSetting MWCodeGen_PPC_vrsave 0
-
- echo "<!-- Settings for "PPC Global Optimizer" panel -->"
- WriteValueSetting GlobalOptimizer_PPC_optimizationlevel Level0
- WriteValueSetting GlobalOptimizer_PPC_optfor Speed
-
- echo "<!-- Settings for "PPC Linker" panel -->"
- WriteValueSetting MWLinker_PPC_linksym 1
- WriteValueSetting MWLinker_PPC_symfullpath 1
- WriteValueSetting MWLinker_PPC_linkmap 0
- WriteValueSetting MWLinker_PPC_nolinkwarnings 0
- WriteValueSetting MWLinker_PPC_dontdeadstripinitcode 0
- WriteValueSetting MWLinker_PPC_permitmultdefs 0
- WriteValueSetting MWLinker_PPC_linkmode Fast
- WriteValueSetting MWLinker_PPC_initname "__initialize"
- WriteValueSetting MWLinker_PPC_mainname ""
- WriteValueSetting MWLinker_PPC_termname "__terminate"
-
- echo "<!-- Settings for "PPC PEF" panel -->"
- WriteValueSetting MWPEF_exports Pragma
- WriteValueSetting MWPEF_libfolder 0
- WriteValueSetting MWPEF_sortcode None
- WriteValueSetting MWPEF_expandbss 0
- WriteValueSetting MWPEF_sharedata 0
- WriteValueSetting MWPEF_olddefversion 0
- WriteValueSetting MWPEF_oldimpversion 0
- WriteValueSetting MWPEF_currentversion 0
- WriteValueSetting MWPEF_fragmentname ""
- WriteValueSetting MWPEF_collapsereloads 0
-
- echo "</SETTINGLIST>"
- }
- #####
- # WriteTARGET generates a complete <TARGET>...</TARGET> entry
- #####
- WriteTARGET()
- {
- TARGETNAME=$1
- OUTPUTNAME=$2
- shift 2
-
- echo "<TARGET>"
-
- echo "<NAME>$TARGETNAME</NAME>"
-
- WriteSETTINGLIST "$TARGETNAME" "$OUTPUTNAME"
-
- echo "<FILELIST>"
- for file in "$@"; do
- WriteFILE "$file"
- done
- echo "</FILELIST>"
-
- echo "<LINKORDER>"
- for file in "$@"; do
- WriteFILEREF "$file"
- done
- echo "</LINKORDER>"
-
- echo "</TARGET>"
- }
- #####
- # WriteGROUP generates a complete <GROUP>...</GROUP> entry
- #####
- WriteGROUP()
- {
- GROUPNAME=$1
- TARGETNAME=$2
- shift 2
-
- echo "<GROUP><NAME>$GROUPNAME</NAME>"
-
- for file in "$@"; do
- WriteFILEREF "$file" "$TARGETNAME"
- done
-
- echo "</GROUP>"
- }
- #################################################################################################
- # the start of the script
- #####
- # first create a list of .c files that will be part of the project, we need it several times
- #####
- CFILES=
- while [ $# -ge 1 ]; do
- case $1 in
- \\);;
- *.o)
- # strip path before file name and convert .o to .c, then append file name to CFILES
- CFILES=$CFILES\ `echo $1 | sed -e 's/\.\/.*\///' -e 's/\.\///' -e 's/\.o/\.c/'`
- ;;
- esac
- shift
- done
- # libs for codewarrior 6
- #LIBS="console.stubs.c MSL\ ShLibRuntime.Lib MSL\ RuntimePPC.Lib"
- #CLASSICLIBS="MSL\ C.PPC.Lib InterfaceLib FontManager MathLib"
- # libs for codewarrior 7 & 8
- LIBS=""
- CARBONLIBS="MSL_All_Carbon.Lib CarbonLib"
- CLASSICLIBS="MSL_All_PPC.Lib InterfaceLib FontManager MathLib"
- CLASSICLIBS="$CLASSICLIBS TextCommon UnicodeConverter UTCUtils"
- #####
- #
- #####
- GSNAME="GhostscriptLib"
- CLASSICGSNAME="$GSNAME PPC"
- CARBONGSNAME="$GSNAME Carbon"
- CLASSICDEBUGTARGETNAME="$CLASSICGSNAME (Debug)"
- CLASSICFINALTARGETNAME="$CLASSICGSNAME (Final)"
- CARBONDEBUGTARGETNAME="$CARBONGSNAME (Debug)"
- CARBONFINALTARGETNAME="$CARBONGSNAME (Final)"
- WriteXMLHeader
- echo "<PROJECT>"
-
- echo "<TARGETLIST>"
- WriteTARGET "$CARBONDEBUGTARGETNAME" "$CARBONGSNAME" $CFILES $LIBS $CARBONLIBS
- WriteTARGET "$CLASSICDEBUGTARGETNAME" "$CLASSICGSNAME" $CFILES $LIBS $CLASSICLIBS
- echo "</TARGETLIST>"
-
- echo "<TARGETORDER>"
- echo "<ORDEREDTARGET><NAME>$CARBONDEBUGTARGETNAME</NAME></ORDEREDTARGET>"
- echo "<ORDEREDTARGET><NAME>$CLASSICDEBUGTARGETNAME</NAME></ORDEREDTARGET>"
- echo "</TARGETORDER>"
-
- echo "<GROUPLIST>"
- WriteGROUP "Ghostscript Sources" "$CARBONDEBUGTARGETNAME" $CFILES
- # WriteGROUP "Libraries" "$CARBONDEBUGTARGETNAME" $LIBS $CARBONLIBS $CLASSICLIBS
- # WriteGROUP "Libraries" "$CARBONDEBUGTARGETNAME" "console.stubs.c" "MSL ShLibRuntime.Lib" "MSL RuntimePPC.Lib" "MSL C.Carbon.Lib" "CarbonLib" "MSL C.PPC.Lib" "InterfaceLib" "FontManager" "MathLib"
- # nb: this code doesn't work if there are spaces in the library filenames
- echo "<GROUP><NAME>Libraries</NAME>"
- for lib in $LIBS; do
- WriteFILEREF "$lib" "$CARBONDEBUGTARGETNAME"
- WriteFILEREF "$lib" "$CLASSICDEBUGTARGETNAME"
- done
- for lib in $CARBONLIBS; do
- WriteFILEREF "$lib" "$CARBONDEBUGTARGETNAME"
- done
- for lib in $CLASSICLIBS; do
- WriteFILEREF "$lib" "$CLASSICDEBUGTARGETNAME"
- done
- echo "</GROUP>"
-
- echo "</GROUPLIST>"
- echo "</PROJECT>"
- exit 0
|