Makefile.global 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p
  2. INSTALL = $(top_srcdir)/build/shtool install -c
  3. INSTALL_DATA = $(INSTALL) -m 644
  4. DEFS = -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
  5. COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH)
  6. all: $(all_targets)
  7. @echo
  8. @echo "Build complete."
  9. @echo "Don't forget to run 'make test'."
  10. @echo
  11. build-modules: $(PHP_MODULES) $(PHP_ZEND_EX)
  12. build-binaries: $(PHP_BINARIES)
  13. libphp.la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
  14. $(LIBTOOL) --mode=link $(CC) $(LIBPHP_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
  15. -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1
  16. libs/libphp.bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
  17. $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp.so
  18. install: $(all_targets) $(install_targets)
  19. install-sapi: $(OVERALL_TARGET)
  20. @echo "Installing PHP SAPI module: $(PHP_SAPI)"
  21. -@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir)
  22. -@if test ! -r $(phptempdir)/libphp.$(SHLIB_DL_SUFFIX_NAME); then \
  23. for i in 0.0.0 0.0 0; do \
  24. if test -r $(phptempdir)/libphp.$(SHLIB_DL_SUFFIX_NAME).$$i; then \
  25. $(LN_S) $(phptempdir)/libphp.$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp.$(SHLIB_DL_SUFFIX_NAME); \
  26. break; \
  27. fi; \
  28. done; \
  29. fi
  30. @$(INSTALL_IT)
  31. install-binaries: build-binaries $(install_binary_targets)
  32. install-modules: build-modules
  33. @test -d modules && \
  34. $(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR)
  35. @echo "Installing shared extensions: $(INSTALL_ROOT)$(EXTENSION_DIR)/"
  36. @rm -f modules/*.la >/dev/null 2>&1
  37. @$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR)
  38. install-headers:
  39. -@if test "$(INSTALL_HEADERS)"; then \
  40. for i in `echo $(INSTALL_HEADERS)`; do \
  41. i=`$(top_srcdir)/build/shtool path -d $$i`; \
  42. paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \
  43. done; \
  44. $(mkinstalldirs) $$paths && \
  45. echo "Installing header files: $(INSTALL_ROOT)$(phpincludedir)/" && \
  46. for i in `echo $(INSTALL_HEADERS)`; do \
  47. if test "$(PHP_PECL_EXTENSION)"; then \
  48. src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \
  49. else \
  50. src=$$i; \
  51. fi; \
  52. if test -f "$(top_srcdir)/$$src"; then \
  53. $(INSTALL_DATA) $(top_srcdir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
  54. elif test -f "$(top_builddir)/$$src"; then \
  55. $(INSTALL_DATA) $(top_builddir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \
  56. else \
  57. (cd $(top_srcdir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \
  58. cd $(top_builddir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \
  59. fi \
  60. done; \
  61. fi
  62. PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1'
  63. PHP_TEST_SHARED_EXTENSIONS = ` \
  64. if test "x$(PHP_MODULES)" != "x"; then \
  65. for i in $(PHP_MODULES)""; do \
  66. . $$i; \
  67. if test "x$$dlname" != "xdl_test.so"; then \
  68. $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \
  69. fi; \
  70. done; \
  71. fi; \
  72. if test "x$(PHP_ZEND_EX)" != "x"; then \
  73. for i in $(PHP_ZEND_EX)""; do \
  74. . $$i; $(top_srcdir)/build/shtool echo -n -- " -d zend_extension=$(top_builddir)/modules/$$dlname"; \
  75. done; \
  76. fi`
  77. PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='
  78. test: all
  79. @if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
  80. INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \
  81. if test "$$INI_FILE"; then \
  82. $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
  83. else \
  84. echo > $(top_builddir)/tmp-php.ini; \
  85. fi; \
  86. INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \
  87. if test "$$INI_SCANNED_PATH"; then \
  88. INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \
  89. $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \
  90. fi; \
  91. TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
  92. TEST_PHP_SRCDIR=$(top_srcdir) \
  93. CC="$(CC)" \
  94. $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
  95. TEST_RESULT_EXIT_CODE=$$?; \
  96. rm $(top_builddir)/tmp-php.ini; \
  97. exit $$TEST_RESULT_EXIT_CODE; \
  98. else \
  99. echo "ERROR: Cannot run tests without CLI sapi."; \
  100. fi
  101. clean:
  102. find . -name \*.gcno -o -name \*.gcda | xargs rm -f
  103. find . -name \*.lo -o -name \*.o -o -name \*.dep | xargs rm -f
  104. find . -name \*.la -o -name \*.a | xargs rm -f
  105. find . -name \*.so | xargs rm -f
  106. find . -name .libs -a -type d|xargs rm -rf
  107. rm -f libphp.la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
  108. rm -f ext/opcache/jit/zend_jit_x86.c
  109. rm -f ext/opcache/jit/zend_jit_arm64.c
  110. distclean: clean
  111. rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h main/internal_functions_cli.c main/internal_functions.c Zend/zend_dtrace_gen.h Zend/zend_dtrace_gen.h.bak Zend/zend_config.h
  112. rm -f main/build-defs.h scripts/phpize
  113. rm -f ext/date/lib/timelib_config.h ext/mbstring/libmbfl/config.h ext/oci8/oci8_dtrace_gen.h ext/oci8/oci8_dtrace_gen.h.bak
  114. rm -f scripts/man1/phpize.1 scripts/php-config scripts/man1/php-config.1 sapi/cli/php.1 sapi/cgi/php-cgi.1 sapi/phpdbg/phpdbg.1 ext/phar/phar.1 ext/phar/phar.phar.1
  115. rm -f sapi/fpm/php-fpm.conf sapi/fpm/init.d.php-fpm sapi/fpm/php-fpm.service sapi/fpm/php-fpm.8 sapi/fpm/status.html
  116. rm -f ext/phar/phar.phar ext/phar/phar.php
  117. if test "$(srcdir)" != "$(builddir)"; then \
  118. rm -f ext/phar/phar/phar.inc; \
  119. fi
  120. $(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f
  121. prof-gen:
  122. CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-generate all
  123. prof-clean:
  124. find . -name \*.lo -o -name \*.o | xargs rm -f
  125. find . -name \*.la -o -name \*.a | xargs rm -f
  126. find . -name \*.so | xargs rm -f
  127. rm -f libphp.la $(SAPI_CLI_PATH) $(SAPI_CGI_PATH) $(SAPI_LITESPEED_PATH) $(SAPI_FPM_PATH) $(OVERALL_TARGET) modules/* libs/*
  128. prof-use:
  129. CCACHE_DISABLE=1 $(MAKE) PROF_FLAGS=-fprofile-use all
  130. %_arginfo.h: %.stub.php
  131. @if test -e "$(top_srcdir)/build/gen_stub.php"; then \
  132. if test ! -z "$(PHP)"; then \
  133. echo Parse $< to generate $@;\
  134. $(PHP) $(top_srcdir)/build/gen_stub.php $<; \
  135. elif test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
  136. echo Parse $< to generate $@;\
  137. $(PHP_EXECUTABLE) $(top_srcdir)/build/gen_stub.php $<; \
  138. fi; \
  139. fi;
  140. .PHONY: all clean install distclean test prof-gen prof-clean prof-use
  141. .NOEXPORT: