Makefile.frag 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #
  2. # Zend
  3. #
  4. $(builddir)/zend_language_scanner.lo: $(srcdir)/zend_language_parser.h
  5. $(builddir)/zend_ini_scanner.lo: $(srcdir)/zend_ini_parser.h
  6. $(srcdir)/zend_language_scanner.c: $(srcdir)/zend_language_scanner.l
  7. @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --no-generation-date --case-inverted -cbdFt Zend/zend_language_scanner_defs.h -oZend/zend_language_scanner.c Zend/zend_language_scanner.l)
  8. $(srcdir)/zend_language_parser.h: $(srcdir)/zend_language_parser.c
  9. $(srcdir)/zend_language_parser.c: $(srcdir)/zend_language_parser.y
  10. # Tweak zendparse to be exported through ZEND_API. This has to be revisited once
  11. # bison supports foreign skeletons and that bison version is used. Read
  12. # https://git.savannah.gnu.org/cgit/bison.git/tree/data/README.md for more.
  13. @$(YACC) $(YFLAGS) -v -d $(srcdir)/zend_language_parser.y -o $@
  14. @$(SED) -e 's,^int zendparse\(.*\),ZEND_API int zendparse\1,g' < $@ \
  15. > $@.tmp && \
  16. mv $@.tmp $@
  17. @$(SED) -e 's,^int zendparse\(.*\),ZEND_API int zendparse\1,g' < $(srcdir)/zend_language_parser.h \
  18. > $(srcdir)/zend_language_parser.h.tmp && \
  19. mv $(srcdir)/zend_language_parser.h.tmp $(srcdir)/zend_language_parser.h
  20. @nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
  21. $(SED) -e "s/^#ifndef YYTOKENTYPE/#include \"zend.h\"\\$${nl}#ifndef YYTOKENTYPE/" < $(srcdir)/zend_language_parser.h \
  22. > $(srcdir)/zend_language_parser.h.tmp && \
  23. mv $(srcdir)/zend_language_parser.h.tmp $(srcdir)/zend_language_parser.h
  24. $(srcdir)/zend_ini_parser.h: $(srcdir)/zend_ini_parser.c
  25. $(srcdir)/zend_ini_parser.c: $(srcdir)/zend_ini_parser.y
  26. $(YACC) $(YFLAGS) -v -d $(srcdir)/zend_ini_parser.y -o $@
  27. $(srcdir)/zend_ini_scanner.c: $(srcdir)/zend_ini_scanner.l
  28. @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --no-generation-date --case-inverted -cbdFt Zend/zend_ini_scanner_defs.h -oZend/zend_ini_scanner.c Zend/zend_ini_scanner.l)
  29. # Use an intermediate target to indicate that zend_vm_gen.php produces both files
  30. # at the same time, rather than the same recipe applying for two different targets.
  31. # The "grouped targets" feature, which would solve this directly, is only available
  32. # since GNU Make 4.3.
  33. $(srcdir)/zend_vm_execute.h $(srcdir)/zend_vm_opcodes.c: vm.gen.intermediate ;
  34. .INTERMEDIATE: vm.gen.intermediate
  35. vm.gen.intermediate: $(srcdir)/zend_vm_def.h $(srcdir)/zend_vm_execute.skl $(srcdir)/zend_vm_gen.php
  36. @if test ! -z "$(PHP)"; then \
  37. $(PHP) $(srcdir)/zend_vm_gen.php; \
  38. fi;
  39. $(builddir)/zend_highlight.lo $(builddir)/zend_compile.lo: $(srcdir)/zend_language_parser.h
  40. Zend/zend_execute.lo: $(srcdir)/zend_vm_execute.h $(srcdir)/zend_vm_opcodes.h