kaem.run 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #!/usr/bin/env bash
  2. ## Copyright (C) 2017 Jeremiah Orians
  3. ## This file is part of mescc-tools.
  4. ##
  5. ## mescc-tools is free software: you can redistribute it and/or modify
  6. ## it under the terms of the GNU General Public License as published by
  7. ## the Free Software Foundation, either version 3 of the License, or
  8. ## (at your option) any later version.
  9. ##
  10. ## mescc-tools is distributed in the hope that it will be useful,
  11. ## but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ## GNU General Public License for more details.
  14. ##
  15. ## You should have received a copy of the GNU General Public License
  16. ## along with mescc-tools. If not, see <http://www.gnu.org/licenses/>.
  17. # kaem build file for bootstrapping
  18. # Build bin folder for binaries
  19. mkdir -p bin
  20. # First build blood-elf
  21. # Generate elf footer for debugging
  22. /usr/bin/env blood-elf \
  23. -f ../mescc-tools-seed/blood-elf.M1 \
  24. -o ../mescc-tools-seed/blood-elf-footer.M1
  25. # Assemble
  26. /usr/bin/env M1 \
  27. --LittleEndian \
  28. --architecture x86 \
  29. -f ../mescc-tools-seed/x86_defs.M1 \
  30. -f ../mescc-tools-seed/libc-core.M1 \
  31. -f ../mescc-tools-seed/blood-elf.M1 \
  32. -f ../mescc-tools-seed/blood-elf-footer.M1 \
  33. -o ../mescc-tools-seed/blood-elf.hex2
  34. # Link
  35. /usr/bin/env hex2 \
  36. --LittleEndian \
  37. --architecture x86 \
  38. --BaseAddress 0x8048000 \
  39. -f ../mescc-tools-seed/ELF-i386-debug.hex2 \
  40. -f ../mescc-tools-seed/blood-elf.hex2 \
  41. -o bin/blood-elf \
  42. --exec_enable
  43. # Secondly build hex2-linker
  44. # use our newly generated blood-elf to create the elf footer
  45. ./bin/blood-elf \
  46. -f ../mescc-tools-seed/hex2.M1 \
  47. -o ../mescc-tools-seed/hex2-footer.M1
  48. # Assemble
  49. /usr/bin/env M1 \
  50. --LittleEndian \
  51. --architecture x86 \
  52. -f ../mescc-tools-seed/x86_defs.M1 \
  53. -f ../mescc-tools-seed/libc-core.M1 \
  54. -f ../mescc-tools-seed/hex2.M1 \
  55. -f ../mescc-tools-seed/hex2-footer.M1 \
  56. -o ../mescc-tools-seed/hex2.hex2
  57. # Link
  58. /usr/bin/env hex2 \
  59. --LittleEndian \
  60. --architecture x86 \
  61. --BaseAddress 0x8048000 \
  62. -f ../mescc-tools-seed/ELF-i386-debug.hex2 \
  63. -f ../mescc-tools-seed/hex2.hex2 \
  64. -o bin/hex2 \
  65. --exec_enable
  66. # Finally build M1-macro
  67. # Generate elf footer for debugging
  68. ./bin/blood-elf \
  69. -f ../mescc-tools-seed/M1.M1 \
  70. -o ../mescc-tools-seed/M1-footer.M1
  71. # Assemble
  72. /usr/bin/env M1 \
  73. --LittleEndian \
  74. --architecture x86 \
  75. -f ../mescc-tools-seed/x86_defs.M1 \
  76. -f ../mescc-tools-seed/libc-core.M1 \
  77. -f ../mescc-tools-seed/M1.M1 \
  78. -f ../mescc-tools-seed/M1-footer.M1 \
  79. -o ../mescc-tools-seed/M1.hex2
  80. # Link
  81. ./bin/hex2 \
  82. --LittleEndian \
  83. --architecture x86 \
  84. --BaseAddress 0x8048000 \
  85. -f ../mescc-tools-seed/ELF-i386-debug.hex2 \
  86. -f ../mescc-tools-seed/M1.hex2 \
  87. -o bin/M1 \
  88. --exec_enable