* [TRIVIAL][PATCH] fix parallel builds for aic7xxx] @ 2003-09-04 17:59 John Cherry 2003-09-04 22:22 ` Justin T. Gibbs 0 siblings, 1 reply; 5+ messages in thread From: John Cherry @ 2003-09-04 17:59 UTC (permalink / raw) To: trivial; +Cc: linux-kernel [-- Attachment #1: Type: text/plain, Size: 315 bytes --] My compile regression scripts were getting random build failures for aic7xxx. The two makefiles could not handle parallel build. Occasionally they would succeed...timing dependent. The following two patches fix this. Part 1 - drivers/scsi/aic7xxx/Makefile Part 2 - drivers/scsi/aic7xxx/aicasm/Makefile John [-- Attachment #2: part1 --] [-- Type: text/plain, Size: 1017 bytes --] --- a/drivers/scsi/aic7xxx/Makefile 2003-08-08 21:42:16.000000000 -0700 +++ b/drivers/scsi/aic7xxx/Makefile 2003-08-14 16:55:13.000000000 -0700 @@ -58,7 +58,9 @@ -p $(obj)/aic7xxx_reg_print.c -i aic7xxx_osm.h ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y) -$(aic7xxx-gen-y): $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm +$(aic7xxx-gen-y): $(src)/aic7xxx.seq + +$(src)/aic7xxx.seq: $(obj)/aicasm/aicasm $(src)/aic7xxx.reg $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \ $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \ $(src)/aic7xxx.seq @@ -72,7 +74,9 @@ -p $(obj)/aic79xx_reg_print.c -i aic79xx_osm.h ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y) -$(aic79xx-gen-y): $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm +$(aic79xx-gen-y): $(src)/aic79xx.seq + +$(src)/aic79xx.seq: $(obj)/aicasm/aicasm $(src)/aic79xx.reg $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \ $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \ $(src)/aic79xx.seq [-- Attachment #3: part2 --] [-- Type: text/plain, Size: 762 bytes --] --- a/drivers/scsi/aic7xxx/aicasm/Makefile 2003-08-08 21:40:42.000000000 -0700 +++ b/drivers/scsi/aic7xxx/aicasm/Makefile 2003-08-14 16:39:00.000000000 -0700 @@ -49,14 +49,18 @@ clean: rm -f $(clean-files) -aicasm_gram.c aicasm_gram.h: aicasm_gram.y +aicasm_gram.c: aicasm_gram.h + mv $(<:.h=).tab.c $(<:.h=.c) + +aicasm_gram.h: aicasm_gram.y $(YACC) $(YFLAGS) -b $(<:.y=) $< - mv $(<:.y=).tab.c $(<:.y=.c) mv $(<:.y=).tab.h $(<:.y=.h) -aicasm_macro_gram.c aicasm_macro_gram.h: aicasm_macro_gram.y +aicasm_macro_gram.c: aicasm_macro_gram.h + mv $(<:.h=).tab.c $(<:.h=.c) + +aicasm_macro_gram.h: aicasm_macro_gram.y $(YACC) $(YFLAGS) -b $(<:.y=) -p mm $< - mv $(<:.y=).tab.c $(<:.y=.c) mv $(<:.y=).tab.h $(<:.y=.h) aicasm_scan.c: aicasm_scan.l ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [TRIVIAL][PATCH] fix parallel builds for aic7xxx] 2003-09-04 17:59 [TRIVIAL][PATCH] fix parallel builds for aic7xxx] John Cherry @ 2003-09-04 22:22 ` Justin T. Gibbs 2003-09-05 16:36 ` John Cherry 0 siblings, 1 reply; 5+ messages in thread From: Justin T. Gibbs @ 2003-09-04 22:22 UTC (permalink / raw) To: John Cherry, trivial; +Cc: linux-kernel > > My compile regression scripts were getting random build failures for > aic7xxx. The two makefiles could not handle parallel build. > Occasionally they would succeed...timing dependent. The following two > patches fix this. > > Part 1 - drivers/scsi/aic7xxx/Makefile I don't understand this patch. It places the .seq file as a target that is rebuilt by invoking the assembler. The .seq file is not a generated file. Can you explain the nature of the failure and why you believe this fixes the problem (other than - "it seems to work with my testing"). The previous Makefile appears to be perfectly valid. > Part 2 - drivers/scsi/aic7xxx/aicasm/Makefile This also doesn't make a lot of sense to me. Is gmake so dumb as to not be able to understand that the invocation of a single target may satisfy multiple dependencies? -- Justin ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [TRIVIAL][PATCH] fix parallel builds for aic7xxx] 2003-09-04 22:22 ` Justin T. Gibbs @ 2003-09-05 16:36 ` John Cherry 2003-09-05 19:21 ` Sam Ravnborg 0 siblings, 1 reply; 5+ messages in thread From: John Cherry @ 2003-09-05 16:36 UTC (permalink / raw) To: Justin T. Gibbs; +Cc: trivial, linux-kernel [-- Attachment #1: Type: text/plain, Size: 2357 bytes --] Short story: The makefile changes separate targets with identical dependencies. In the current Makefiles, things like "running the assembler" and "changing file names" happen multiple times in parallel when building with anything other than -j1. Consider the following example Makefile: targ: a b a b: x touch a b x: touch x clean: rm a b x Running the build with "make targ" yields: touch x touch a b Running the build with "make -j2 targ" yields: touch x touch a b touch a b Notice that the "touch a b" output is not only executed twice, but on an SMP machine, it could be run in parallel (with races). These two patches separate the targets with the same dependencies and prevent these races. I would actually consider this to be a bug in make, but that is another story. Long story: Based on the explanation above, I have attached the output of the aic7xxx build running it with -j1 and with -j2. You can clearly see the problems with parallel race conditions. In the simplistic example above, this how I would change the Makefile to avoid the parallel race. targ: a b a: x touch a b: x touch b x: touch x clean: rm a b x Please apply the patch. It prevents broken builds when running with anything other than -j1 and it does just what I have shown above. BTW, sometimes you get lucky and the build succeeds with a parallel build. John On Thu, 2003-09-04 at 15:22, Justin T. Gibbs wrote: > > > > My compile regression scripts were getting random build failures for > > aic7xxx. The two makefiles could not handle parallel build. > > Occasionally they would succeed...timing dependent. The following two > > patches fix this. > > > > Part 1 - drivers/scsi/aic7xxx/Makefile > > I don't understand this patch. It places the .seq file as a target > that is rebuilt by invoking the assembler. The .seq file is not > a generated file. > > Can you explain the nature of the failure and why you believe this > fixes the problem (other than - "it seems to work with my testing"). > The previous Makefile appears to be perfectly valid. > > > Part 2 - drivers/scsi/aic7xxx/aicasm/Makefile > > This also doesn't make a lot of sense to me. Is gmake so > dumb as to not be able to understand that the invocation of > a single target may satisfy multiple dependencies? > > -- > Justin [-- Attachment #2: output.j1 --] [-- Type: text/plain, Size: 1930 bytes --] make -C drivers/scsi/aic7xxx/aicasm yacc -d -b aicasm_gram aicasm_gram.y mv aicasm_gram.tab.c aicasm_gram.c mv aicasm_gram.tab.h aicasm_gram.h yacc -d -b aicasm_macro_gram -p mm aicasm_macro_gram.y mv aicasm_macro_gram.tab.c aicasm_macro_gram.c mv aicasm_macro_gram.tab.h aicasm_macro_gram.h lex -oaicasm_scan.c aicasm_scan.l lex -Pmm -oaicasm_macro_scan.c aicasm_macro_scan.l gcc -I/usr/include -I. aicasm.c aicasm_symbol.c aicasm_gram.c aicasm_macro_gram.c aicasm_scan.c aicasm_macro_scan.c -o aicasm -ldb drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic79xx_reg.h \ -p drivers/scsi/aic7xxx/aic79xx_reg_print.c -i aic79xx_osm.h -o drivers/scsi/aic7xxx/aic79xx_seq.h \ drivers/scsi/aic7xxx/aic79xx.seq drivers/scsi/aic7xxx/aicasm/aicasm: 785 instructions used CC [M] drivers/scsi/aic7xxx/aic79xx_core.o CC [M] drivers/scsi/aic7xxx/aic79xx_pci.o CC [M] drivers/scsi/aic7xxx/aic79xx_reg_print.o CC [M] drivers/scsi/aic7xxx/aic79xx_osm.o CC [M] drivers/scsi/aic7xxx/aic79xx_proc.o CC [M] drivers/scsi/aic7xxx/aic79xx_osm_pci.o drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic7xxx_reg.h \ -p drivers/scsi/aic7xxx/aic7xxx_reg_print.c -i aic7xxx_osm.h -o drivers/scsi/aic7xxx/aic7xxx_seq.h \ drivers/scsi/aic7xxx/aic7xxx.seq drivers/scsi/aic7xxx/aicasm/aicasm: 879 instructions used CC [M] drivers/scsi/aic7xxx/aic7xxx_core.o CC [M] drivers/scsi/aic7xxx/aic7xxx_93cx6.o CC [M] drivers/scsi/aic7xxx/aic7770.o CC [M] drivers/scsi/aic7xxx/aic7xxx_pci.o CC [M] drivers/scsi/aic7xxx/aic7xxx_reg_print.o CC [M] drivers/scsi/aic7xxx/aic7xxx_osm.o CC [M] drivers/scsi/aic7xxx/aic7xxx_proc.o CC [M] drivers/scsi/aic7xxx/aic7770_osm.o CC [M] drivers/scsi/aic7xxx/aic7xxx_osm_pci.o LD [M] drivers/scsi/aic7xxx/aic7xxx.o LD [M] drivers/scsi/aic7xxx/aic79xx.o Building modules, stage 2. [-- Attachment #3: output.j2 --] [-- Type: text/plain, Size: 3427 bytes --] make -C drivers/scsi/aic7xxx/aicasm yacc -d -b aicasm_gram aicasm_gram.y yacc -d -b aicasm_macro_gram -p mm aicasm_macro_gram.y mv aicasm_macro_gram.tab.c aicasm_macro_gram.c mv aicasm_macro_gram.tab.h aicasm_macro_gram.h yacc -d -b aicasm_gram aicasm_gram.y mv aicasm_gram.tab.c aicasm_gram.c mv aicasm_gram.tab.h aicasm_gram.h lex -oaicasm_scan.c aicasm_scan.l mv aicasm_gram.tab.c aicasm_gram.c lex -Pmm -oaicasm_macro_scan.c aicasm_macro_scan.l mv: can't stat source aicasm_gram.tab.c make[2]: [aicasm_gram.c] Error 1 (ignored) mv aicasm_gram.tab.h aicasm_gram.h mv: can't stat source aicasm_gram.tab.h make[2]: [aicasm_gram.c] Error 1 (ignored) gcc -I/usr/include -I. aicasm.c aicasm_symbol.c aicasm_gram.c aicasm_macro_gram.c aicasm_scan.c aicasm_macro_scan.c -o aicasm -ldb drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic79xx_reg.h \ -p drivers/scsi/aic7xxx/aic79xx_reg_print.c -i aic79xx_osm.h -o drivers/scsi/aic7xxx/aic79xx_seq.h \ drivers/scsi/aic7xxx/aic79xx.seq drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic79xx_reg.h \ -p drivers/scsi/aic7xxx/aic79xx_reg_print.c -i aic79xx_osm.h -o drivers/scsi/aic7xxx/aic79xx_seq.h \ drivers/scsi/aic7xxx/aic79xx.seq drivers/scsi/aic7xxx/aicasm/aicasm: 785 instructions used drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic79xx_reg.h \ -p drivers/scsi/aic7xxx/aic79xx_reg_print.c -i aic79xx_osm.h -o drivers/scsi/aic7xxx/aic79xx_seq.h \ drivers/scsi/aic7xxx/aic79xx.seq drivers/scsi/aic7xxx/aicasm/aicasm: 785 instructions used drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic7xxx_reg.h \ -p drivers/scsi/aic7xxx/aic7xxx_reg_print.c -i aic7xxx_osm.h -o drivers/scsi/aic7xxx/aic7xxx_seq.h \ drivers/scsi/aic7xxx/aic7xxx.seq drivers/scsi/aic7xxx/aicasm/aicasm: 879 instructions used drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic7xxx_reg.h \ -p drivers/scsi/aic7xxx/aic7xxx_reg_print.c -i aic7xxx_osm.h -o drivers/scsi/aic7xxx/aic7xxx_seq.h \ drivers/scsi/aic7xxx/aic7xxx.seq drivers/scsi/aic7xxx/aicasm/aicasm: 785 instructions used drivers/scsi/aic7xxx/aicasm/aicasm -Idrivers/scsi/aic7xxx -r drivers/scsi/aic7xxx/aic7xxx_reg.h \ -p drivers/scsi/aic7xxx/aic7xxx_reg_print.c -i aic7xxx_osm.h -o drivers/scsi/aic7xxx/aic7xxx_seq.h \ drivers/scsi/aic7xxx/aic7xxx.seq drivers/scsi/aic7xxx/aicasm/aicasm: 879 instructions used CC [M] drivers/scsi/aic7xxx/aic79xx_core.o drivers/scsi/aic7xxx/aicasm/aicasm: 879 instructions used CC [M] drivers/scsi/aic7xxx/aic79xx_pci.o CC [M] drivers/scsi/aic7xxx/aic79xx_reg_print.o CC [M] drivers/scsi/aic7xxx/aic79xx_osm.o CC [M] drivers/scsi/aic7xxx/aic79xx_proc.o CC [M] drivers/scsi/aic7xxx/aic79xx_osm_pci.o CC [M] drivers/scsi/aic7xxx/aic7xxx_core.o CC [M] drivers/scsi/aic7xxx/aic7xxx_93cx6.o CC [M] drivers/scsi/aic7xxx/aic7770.o CC [M] drivers/scsi/aic7xxx/aic7xxx_pci.o CC [M] drivers/scsi/aic7xxx/aic7xxx_reg_print.o CC [M] drivers/scsi/aic7xxx/aic7xxx_osm.o CC [M] drivers/scsi/aic7xxx/aic7xxx_proc.o CC [M] drivers/scsi/aic7xxx/aic7770_osm.o CC [M] drivers/scsi/aic7xxx/aic7xxx_osm_pci.o LD [M] drivers/scsi/aic7xxx/aic7xxx.o LD [M] drivers/scsi/aic7xxx/aic79xx.o Building modules, stage 2. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [TRIVIAL][PATCH] fix parallel builds for aic7xxx] 2003-09-05 16:36 ` John Cherry @ 2003-09-05 19:21 ` Sam Ravnborg 2003-09-05 23:47 ` John Cherry 0 siblings, 1 reply; 5+ messages in thread From: Sam Ravnborg @ 2003-09-05 19:21 UTC (permalink / raw) To: John Cherry, Justin T. Gibbs; +Cc: Justin T. Gibbs, trivial, linux-kernel Hi Justin, John. I agree with Justin that the patch for aic7xxx/Makefile looks a bit suspisious. I have modifed it to use a phony target as serialisation point. In this way it is more obvious what is actually happening. The patch for aicasm/Makefile looked OK - included here as well to make the patch complete. I have tested this patch on UP only, with make -j4. Before it broke in aicasm, now it succeeds. Justin, does this look OK for you? On Fri, Sep 05, 2003 at 09:36:25AM -0700, John Cherry wrote: > Short story: > > The makefile changes separate targets with identical dependencies. In > the current Makefiles, things like "running the assembler" and "changing > file names" happen multiple times in parallel when building with > anything other than -j1. Consider the following example Makefile: > > targ: a b > a b: x > touch a b > x: > touch x > clean: > rm a b x > > Running the build with "make targ" yields: > touch x > touch a b > > Running the build with "make -j2 targ" yields: > touch x > touch a b > touch a b > > Notice that the "touch a b" output is not only executed twice, but on an > SMP machine, it could be run in parallel (with races). These two > patches separate the targets with the same dependencies and prevent > these races. I would actually consider this to be a bug in make, but > that is another story. Nope, consider the command to execute was: touch $@ - then it make all sense again. Sam ===== drivers/scsi/aic7xxx/Makefile 1.21 vs edited ===== --- 1.21/drivers/scsi/aic7xxx/Makefile Fri May 2 20:04:40 2003 +++ edited/drivers/scsi/aic7xxx/Makefile Fri Sep 5 21:14:01 2003 @@ -58,7 +58,13 @@ -p $(obj)/aic7xxx_reg_print.c -i aic7xxx_osm.h ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y) -$(aic7xxx-gen-y): $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm +$(aic7xxx-gen-y): $(src)/aic7xxx.seq $(src)/aic7xxx.reg +$(aic7xxx-gen-y): doaic7xasm + +.PHONY: doaic7xasm +$(aic7xxx-gen-y): doaic7xasm + +doaic7xasm: $(obj)/aicasm/aicasm $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \ $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \ $(src)/aic7xxx.seq @@ -72,7 +78,12 @@ -p $(obj)/aic79xx_reg_print.c -i aic79xx_osm.h ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y) -$(aic79xx-gen-y): $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm +$(aic79xx-gen-y): $(src)/aic79xx.seq $(src)/aic79xx.reg + +.PHONY: doaic79asm +$(aic79xx-gen-y): doaic79asm + +doaic79asm: $(obj)/aicasm/aicasm $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \ $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \ $(src)/aic79xx.seq ===== drivers/scsi/aic7xxx/aicasm/Makefile 1.11 vs edited ===== --- 1.11/drivers/scsi/aic7xxx/aicasm/Makefile Tue Mar 11 01:57:17 2003 +++ edited/drivers/scsi/aic7xxx/aicasm/Makefile Fri Sep 5 21:02:54 2003 @@ -49,14 +49,18 @@ clean: rm -f $(clean-files) -aicasm_gram.c aicasm_gram.h: aicasm_gram.y +aicasm_gram.c: aicasm_gram.h + mv $(<:.h=).tab.c $(<:.h=.c) + +aicasm_gram.h: aicasm_gram.y $(YACC) $(YFLAGS) -b $(<:.y=) $< - mv $(<:.y=).tab.c $(<:.y=.c) mv $(<:.y=).tab.h $(<:.y=.h) -aicasm_macro_gram.c aicasm_macro_gram.h: aicasm_macro_gram.y +aicasm_macro_gram.c: aicasm_macro_gram.h + mv $(<:.h=).tab.c $(<:.h=.c) + +aicasm_macro_gram.h: aicasm_macro_gram.y $(YACC) $(YFLAGS) -b $(<:.y=) -p mm $< - mv $(<:.y=).tab.c $(<:.y=.c) mv $(<:.y=).tab.h $(<:.y=.h) aicasm_scan.c: aicasm_scan.l ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [TRIVIAL][PATCH] fix parallel builds for aic7xxx] 2003-09-05 19:21 ` Sam Ravnborg @ 2003-09-05 23:47 ` John Cherry 0 siblings, 0 replies; 5+ messages in thread From: John Cherry @ 2003-09-05 23:47 UTC (permalink / raw) To: Sam Ravnborg; +Cc: Justin T. Gibbs, trivial, linux-kernel Sam, I don't know if this patch makes it any more obvious, but it does exactly the same thing as the original patch. If a phony target makes things more obvious, OK. I am more concerned that it is fixed, not how it is fixed at this point. I tested the new patch on a dual proc using -j4 and it built just fine. John On Fri, 2003-09-05 at 12:21, Sam Ravnborg wrote: > Hi Justin, John. > > I agree with Justin that the patch for aic7xxx/Makefile looks a bit suspisious. > I have modifed it to use a phony target as serialisation point. > In this way it is more obvious what is actually happening. > The patch for aicasm/Makefile looked OK - included here as well to make the > patch complete. > > I have tested this patch on UP only, with make -j4. > Before it broke in aicasm, now it succeeds. > > Justin, does this look OK for you? > > > On Fri, Sep 05, 2003 at 09:36:25AM -0700, John Cherry wrote: > > Short story: > > > > The makefile changes separate targets with identical dependencies. In > > the current Makefiles, things like "running the assembler" and "changing > > file names" happen multiple times in parallel when building with > > anything other than -j1. Consider the following example Makefile: > > > > targ: a b > > a b: x > > touch a b > > x: > > touch x > > clean: > > rm a b x > > > > Running the build with "make targ" yields: > > touch x > > touch a b > > > > Running the build with "make -j2 targ" yields: > > touch x > > touch a b > > touch a b > > > > Notice that the "touch a b" output is not only executed twice, but on an > > SMP machine, it could be run in parallel (with races). These two > > patches separate the targets with the same dependencies and prevent > > these races. I would actually consider this to be a bug in make, but > > that is another story. > Nope, consider the command to execute was: touch $@ - then it make all > sense again. > > Sam > > ===== drivers/scsi/aic7xxx/Makefile 1.21 vs edited ===== > --- 1.21/drivers/scsi/aic7xxx/Makefile Fri May 2 20:04:40 2003 > +++ edited/drivers/scsi/aic7xxx/Makefile Fri Sep 5 21:14:01 2003 > @@ -58,7 +58,13 @@ > -p $(obj)/aic7xxx_reg_print.c -i aic7xxx_osm.h > > ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y) > -$(aic7xxx-gen-y): $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm > +$(aic7xxx-gen-y): $(src)/aic7xxx.seq $(src)/aic7xxx.reg > +$(aic7xxx-gen-y): doaic7xasm > + > +.PHONY: doaic7xasm > +$(aic7xxx-gen-y): doaic7xasm > + > +doaic7xasm: $(obj)/aicasm/aicasm > $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \ > $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \ > $(src)/aic7xxx.seq > @@ -72,7 +78,12 @@ > -p $(obj)/aic79xx_reg_print.c -i aic79xx_osm.h > > ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y) > -$(aic79xx-gen-y): $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm > +$(aic79xx-gen-y): $(src)/aic79xx.seq $(src)/aic79xx.reg > + > +.PHONY: doaic79asm > +$(aic79xx-gen-y): doaic79asm > + > +doaic79asm: $(obj)/aicasm/aicasm > $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \ > $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \ > $(src)/aic79xx.seq > ===== drivers/scsi/aic7xxx/aicasm/Makefile 1.11 vs edited ===== > --- 1.11/drivers/scsi/aic7xxx/aicasm/Makefile Tue Mar 11 01:57:17 2003 > +++ edited/drivers/scsi/aic7xxx/aicasm/Makefile Fri Sep 5 21:02:54 2003 > @@ -49,14 +49,18 @@ > clean: > rm -f $(clean-files) > > -aicasm_gram.c aicasm_gram.h: aicasm_gram.y > +aicasm_gram.c: aicasm_gram.h > + mv $(<:.h=).tab.c $(<:.h=.c) > + > +aicasm_gram.h: aicasm_gram.y > $(YACC) $(YFLAGS) -b $(<:.y=) $< > - mv $(<:.y=).tab.c $(<:.y=.c) > mv $(<:.y=).tab.h $(<:.y=.h) > > -aicasm_macro_gram.c aicasm_macro_gram.h: aicasm_macro_gram.y > +aicasm_macro_gram.c: aicasm_macro_gram.h > + mv $(<:.h=).tab.c $(<:.h=.c) > + > +aicasm_macro_gram.h: aicasm_macro_gram.y > $(YACC) $(YFLAGS) -b $(<:.y=) -p mm $< > - mv $(<:.y=).tab.c $(<:.y=.c) > mv $(<:.y=).tab.h $(<:.y=.h) > > aicasm_scan.c: aicasm_scan.l > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-09-05 23:48 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-09-04 17:59 [TRIVIAL][PATCH] fix parallel builds for aic7xxx] John Cherry 2003-09-04 22:22 ` Justin T. Gibbs 2003-09-05 16:36 ` John Cherry 2003-09-05 19:21 ` Sam Ravnborg 2003-09-05 23:47 ` John Cherry
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
Powered by JetHome