@@ -54,8 +54,31 @@ DEBUGGER_ARGS=
5454
5555all : generated_files $(EXT_TARGETS ) $(PECL_TARGETS ) $(SAPI_TARGETS ) test_helpers
5656
57+ !if "$(PARALLEL_BUILD)" == "yes"
58+ BUILD_DIR_TARGET =build_dirs
59+ !else
5760build_dirs : $(BUILD_DIR ) $(BUILD_DIRS_SUB ) $(BUILD_DIR_DEV )
61+ BUILD_DIR_TARGET =$(BUILD_DIR ) $(BUILD_DIRS_SUB ) $(BUILD_DIR_DEV )
62+ !endif
5863
64+ !if "$(PARALLEL_BUILD)" == "yes"
65+ !if $(RE2C) == ""
66+ generated_files : build_dirs .SYNC \
67+ Zend\z end_ini_parser.c Zend\z end_ini_parser.h \
68+ Zend\z end_language_parser.c Zend\z end_language_parser.h \
69+ sapi\p hpdbg\p hpdbg_parser.c sapi\p hpdbg\p hpdbg_parser.h \
70+ $(PHPDEF ) $(MCFILE )
71+ !else
72+ generated_files : build_dirs .SYNC \
73+ Zend\z end_ini_parser.c Zend\z end_ini_parser.h \
74+ Zend\z end_language_parser.c Zend\z end_language_parser.h \
75+ Zend\z end_ini_scanner.c Zend\z end_ini_scanner_defs.h \
76+ Zend\z end_language_scanner.c Zend\z end_language_scanner_defs.h \
77+ sapi\p hpdbg\p hpdbg_parser.c sapi\p hpdbg\p hpdbg_parser.h \
78+ sapi\p hpdbg\p hpdbg_lexer.c \
79+ $(PHPDEF ) $(MCFILE )
80+ !endif
81+ !else
5982!if $(RE2C) == ""
6083generated_files : build_dirs \
6184 Zend\z end_ini_parser.c Zend\z end_ini_parser.h \
@@ -71,10 +94,28 @@ generated_files: build_dirs \
7194 sapi\p hpdbg\p hpdbg_parser.c sapi\p hpdbg\p hpdbg_lexer.c \
7295 $(PHPDEF ) $(MCFILE )
7396!endif
97+ !endif
7498
7599$(BUILD_DIR ) \$(PHPDLL ) .def : $(PHP_DLL_DEF_SOURCES )
76100 type $(PHP_DLL_DEF_SOURCES ) > $(BUILD_DIR ) \$ (PHPDLL).def
77101
102+ !if "$(PARALLEL_BUILD)" == "yes"
103+ # Bison and re2c generate two files per invocation. Give the recipe to one
104+ # target and make the side-effect output depend on it, so jom runs it once.
105+ Zend\zend_ini_parser.h : Zend\zend_ini_parser.c
106+ Zend\zend_ini_parser.c : Zend\zend_ini_parser.y
107+ $(BISON ) $(BISON_FLAGS ) --output=Zend/zend_ini_parser.c -v -d Zend/zend_ini_parser.y
108+
109+ Zend\zend_language_parser.h : Zend\zend_language_parser.c
110+ Zend\zend_language_parser.c : Zend\zend_language_parser.y
111+ $(BISON ) $(BISON_FLAGS ) --output=Zend/zend_language_parser.c -v -d Zend/zend_language_parser.y
112+ @if " $( SED) " neq " " $(SED ) -i " s,^int zendparse\(.*\),ZEND_API int zendparse\1,g" Zend/zend_language_parser.c
113+ @if " $( SED) " neq " " $(SED ) -i " s,^int zendparse\(.*\),ZEND_API int zendparse\1,g" Zend/zend_language_parser.h
114+
115+ sapi\phpdbg\phpdbg_parser.h : sapi\phpdbg\phpdbg_parser.c
116+ sapi\phpdbg\phpdbg_parser.c : sapi\phpdbg\phpdbg_parser.y
117+ $(BISON ) $(BISON_FLAGS ) --output=sapi/phpdbg/phpdbg_parser.c -v -d sapi/phpdbg/phpdbg_parser.y
118+ !else
78119Zend\zend_ini_parser.c Zend\zend_ini_parser.h : Zend\zend_ini_parser.y
79120 $(BISON ) $(BISON_FLAGS ) --output=Zend/zend_ini_parser.c -v -d Zend/zend_ini_parser.y
80121
@@ -85,13 +126,24 @@ Zend\zend_language_parser.c Zend\zend_language_parser.h: Zend\zend_language_pars
85126
86127sapi\phpdbg\phpdbg_parser.c sapi\phpdbg\phpdbg_parser.h : sapi\phpdbg\phpdbg_parser.y
87128 $(BISON ) $(BISON_FLAGS ) --output=sapi/phpdbg/phpdbg_parser.c -v -d sapi/phpdbg/phpdbg_parser.y
129+ !endif
88130
89131!if $(RE2C) != ""
132+ !if "$(PARALLEL_BUILD)" == "yes"
133+ Zend\zend_ini_scanner_defs.h : Zend\zend_ini_scanner.c
134+ Zend\zend_ini_scanner.c : Zend\zend_ini_scanner.l
135+ $(RE2C ) $(RE2C_FLAGS ) --case-inverted -cbdFt Zend/zend_ini_scanner_defs.h -oZend/zend_ini_scanner.c Zend/zend_ini_scanner.l
136+
137+ Zend\zend_language_scanner_defs.h : Zend\zend_language_scanner.c
138+ Zend\zend_language_scanner.c : Zend\zend_language_scanner.l
139+ $(RE2C ) $(RE2C_FLAGS ) --case-inverted -cbdFt Zend/zend_language_scanner_defs.h -oZend/zend_language_scanner.c Zend/zend_language_scanner.l
140+ !else
90141Zend\zend_ini_scanner.c Zend\zend_ini_scanner_defs.h : Zend\zend_ini_scanner.l
91142 $(RE2C ) $(RE2C_FLAGS ) --case-inverted -cbdFt Zend/zend_ini_scanner_defs.h -oZend/zend_ini_scanner.c Zend/zend_ini_scanner.l
92143
93144Zend\zend_language_scanner.c Zend\zend_language_scanner_defs.h : Zend\zend_language_scanner.l
94145 $(RE2C ) $(RE2C_FLAGS ) --case-inverted -cbdFt Zend/zend_language_scanner_defs.h -oZend/zend_language_scanner.c Zend/zend_language_scanner.l
146+ !endif
95147
96148sapi\phpdbg\phpdbg_lexer.c : sapi\phpdbg\phpdbg_lexer.l
97149 $(RE2C ) $(RE2C_FLAGS ) -cbdFo sapi/phpdbg/phpdbg_lexer.c sapi/phpdbg/phpdbg_lexer.l
@@ -124,7 +176,7 @@ _VC_MANIFEST_EMBED_EXE= if exist $@.manifest $(MT) -nologo -manifest $@.manifest
124176_VC_MANIFEST_EMBED_DLL = if exist $@ .manifest $(MT ) -nologo -manifest $@ .manifest -outputresource:$@ ;2
125177!endif
126178
127- $(PHPDLL_RES ) : win32\build\template.rc
179+ $(PHPDLL_RES ) : generated_files $( MCFILE ) win32\build\template.rc
128180 $(RC ) /nologo /fo $(PHPDLL_RES ) /d FILE_DESCRIPTION=" \" PHP Script Interpreter\" " \
129181 /d FILE_NAME=" \" $( PHPDLL) \" " /d PRODUCT_NAME=" \" PHP Script Interpreter\" " \
130182 /I$(BUILD_DIR ) /d MC_INCLUDE=" \" $( MCFILE) \" " \
@@ -138,7 +190,7 @@ $(BUILD_DIR)\$(PHPDLL): generated_files $(PHPDEF) $(PHP_GLOBAL_OBJS) $(STATIC_EX
138190
139191$(BUILD_DIR ) \$(PHPLIB ) : $(BUILD_DIR ) \$(PHPDLL )
140192
141- $(BUILD_DIR ) $( BUILD_DIRS_SUB ) $( BUILD_DIR_DEV ) :
193+ $(BUILD_DIR_TARGET ) :
142194 @echo Recreating build dirs
143195 @if not exist $(BUILD_DIR ) mkdir $(BUILD_DIR )
144196 @cd $(BUILD_DIR )
0 commit comments