# args: first is the source (XML) file, second is the destination directory # converts the xml file to a plist file and converts that into a byte # array defined in a .h and .c file # for compilation INPUT_FILE_NAME=`basename $1` BASE_FILENAME=`echo ${INPUT_FILE_NAME%.*}` LABEL=`echo _${BASE_FILENAME}_PLIST | tr '[:lower:]' '[:upper:]' | tr '.' '_'` mkdir -p $2 printf "// Please do not edit this file!\n" > $2/$BASE_FILENAME.h printf "// This file was automatically generated from $INPUT_FILE_NAME.\n\n" >> $2/$BASE_FILENAME.h printf "#ifndef $LABEL\n" >> $2/$BASE_FILENAME.h printf "#define $LABEL\n\n" >> $2/$BASE_FILENAME.h printf "#include \n\n" >> $2/$BASE_FILENAME.h printf "extern unsigned char ${BASE_FILENAME}_plist[];\n" >> $2/$BASE_FILENAME.h printf "extern size_t ${BASE_FILENAME}_plist_len;\n\n" >> $2/$BASE_FILENAME.h printf "#endif // $LABEL\n" >> $2/$BASE_FILENAME.h printf "// Please do not edit this file!\n" > $2/$BASE_FILENAME.c printf "// This file was automatically generated from $INPUT_FILE_NAME.\n\n" >> $2/$BASE_FILENAME.c printf "#include \"$BASE_FILENAME.h\"\n\n" >> $2/$BASE_FILENAME.c printf "unsigned char ${BASE_FILENAME}_plist[] = {\n" >> $2/$BASE_FILENAME.c plistutil -i $1 | xxd -i - >> $2/$BASE_FILENAME.c printf " };\n\n" >> $2/$BASE_FILENAME.c printf "size_t ${BASE_FILENAME}_plist_len = sizeof(${BASE_FILENAME}_plist);\n" >> $2/$BASE_FILENAME.c