tpr.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*Structure definitions from tprbuilder source; slightly modified
  2. to work under C++
  3. */
  4. typedef unsigned char Boolean;
  5. /* global enumerations */
  6. enum SectionType_ { SECTION_NONE, SECTION_SETTINGS, SECTION_LIBOPTS,
  7. SECTION_FILEEDIT, SECTION_FILES };
  8. typedef enum SectionType_ SectionType;
  9. /* definitions */
  10. typedef struct tprsettings tprSettings;
  11. struct tprsettings
  12. {
  13. tprsettings() : archive(0),pack(0),debug_info(0),std_lib(0),
  14. use_data_var(0),copy_data_var(0),copy_data_var_arc(0),
  15. optimize_nops(1),optimize_returns(1),optimize_branches(1),
  16. optimize_moves(1),optimize_tests(1),optimize_calcs(1),
  17. remove_unused(1),outputbin(0),fargo(0),flash_os(0),
  18. cut_ranges(1),reorder_sections(1),merge_constants(1),
  19. initialize_bss(1)
  20. {}
  21. Boolean archive; // we want to build an archive
  22. Boolean pack; // we want to pack the executable
  23. Boolean debug_info; // pass -g option to tigcc
  24. Boolean std_lib; // link against tigcc.a
  25. Boolean use_data_var;
  26. Boolean copy_data_var;
  27. Boolean copy_data_var_arc;
  28. Boolean optimize_nops;
  29. Boolean optimize_returns;
  30. Boolean optimize_branches;
  31. Boolean optimize_moves;
  32. Boolean optimize_tests;
  33. Boolean optimize_calcs;
  34. Boolean remove_unused;
  35. Boolean outputbin;
  36. Boolean fargo;
  37. Boolean flash_os;
  38. Boolean cut_ranges;
  39. Boolean reorder_sections;
  40. Boolean merge_constants;
  41. Boolean initialize_bss;
  42. QString pack_name;
  43. QString cc_switches;
  44. QString as_switches;
  45. QString a68k_switches;
  46. QString cmd_line;
  47. QString post_build;
  48. QString data_var;
  49. };
  50. enum tprreloctypes {
  51. RT_NONE, // AMS (relocs) / Direct (ROM_CALLs) / None (BSS), not for DataVar
  52. RT_PRECOMP, // ROM_CALLs only: Precomputed (Optimized)
  53. RT_KERNEL, // Kernel
  54. RT_COMPRESSED, // Compressed
  55. RT_FLINE // ROM_CALLs only: F-Line
  56. };
  57. typedef enum tprreloctypes tprRelocType;
  58. typedef struct tprlibopts tprLibOpts;
  59. struct tprlibopts
  60. {
  61. tprlibopts() : use_ti89(0),use_ti92p(0),use_v200(0),opt_calc_consts(0),
  62. use_kernel(0),use_preos(0),use_minams(0),
  63. unofficial_os(0),use_fline_jumps(0),use_4b_fline_jumps(0),
  64. use_internal_fline_emu(0),use_return_value(0),
  65. enable_error_return(0),save_screen(0),opt_rom_calls(0),
  66. minams(0),reloc_format(RT_NONE),rom_call_format(RT_NONE),
  67. bss_ref_format(RT_KERNEL),data_ref_format(RT_KERNEL)
  68. {}
  69. Boolean use_ti89;
  70. Boolean use_ti92p;
  71. Boolean use_v200;
  72. Boolean opt_calc_consts;
  73. Boolean use_kernel;
  74. Boolean use_preos;
  75. Boolean use_minams;
  76. Boolean unofficial_os;
  77. Boolean use_fline_jumps;
  78. Boolean use_4b_fline_jumps;
  79. Boolean use_internal_fline_emu;
  80. Boolean use_return_value;
  81. Boolean enable_error_return;
  82. Boolean save_screen;
  83. Boolean opt_rom_calls;
  84. int minams;
  85. tprRelocType reloc_format;
  86. tprRelocType rom_call_format;
  87. tprRelocType bss_ref_format;
  88. tprRelocType data_ref_format;
  89. };
  90. typedef struct
  91. {
  92. QStringList path;
  93. QStringList folder;
  94. } TPRFileList;
  95. typedef struct
  96. {
  97. QString prj_name;
  98. tprSettings settings;
  99. tprLibOpts libopts;
  100. TPRFileList h_files;
  101. TPRFileList c_files;
  102. TPRFileList s_files;
  103. TPRFileList asm_files;
  104. TPRFileList o_files;
  105. TPRFileList a_files;
  106. TPRFileList txt_files;
  107. TPRFileList oth_files;
  108. TPRFileList quill_files;
  109. } TPRDataStruct;
  110. int loadTPR(QString &fileName,TPRDataStruct *dest);
  111. QString loadFileText(const char *fileName);