patch.sh 858 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/bin/bash
  2. ### This script adds a code snippet to the compiled main C file.
  3. ### The snippet is required for Allegro5 required on macOS.
  4. TARGET_FILE="$1"
  5. TEMP_FILE="temp_${TARGET_FILE}"
  6. if [[ ! -f "$TARGET_FILE" ]]; then
  7. echo "File $TARGET_FILE not found!"
  8. exit 1
  9. fi
  10. PATTERN="\/\*={76}\*\/"
  11. awk -v insertfile="/dev/stdin" '
  12. {
  13. print
  14. if ($0 ~ /\/\*={76}\*\//) {
  15. while ((getline line < insertfile) > 0) {
  16. print line
  17. }
  18. close(insertfile)
  19. }
  20. }' "$TARGET_FILE" > "$TEMP_FILE" <<'EOF'
  21. extern INTEGER SYSTEM_argc;
  22. extern void *SYSTEM_argv;
  23. #undef main
  24. #define main(__argc, __argv) _main (void *stktop); \
  25. int _al_mangled_main (__argc, __argv) { \
  26. SYSTEM_argc = argc; SYSTEM_argv = argv; return _main(&argv); } \
  27. int __attribute__ ((noinline)) _main (void *stktop)
  28. EOF
  29. mv "$TEMP_FILE" "$TARGET_FILE"