You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	x86/doc/Makefile: DBG=1 to preprocess external asm
The macro hell sometimes make it difficult to trace the source of an error, so it is easier to analyze the preprocessed output. This patch makes this automatical by specifying DBG=1 on the command line: a file ffmpeg/dir/file.asm gets preprocessed to builddir/dir/file.dbg.asm, which is then compiled. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							d9293c776e
						
					
				
				
					commit
					bc8e044d8c
				
			
							
								
								
									
										10
									
								
								common.mak
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								common.mak
									
									
									
									
									
								
							| @@ -5,6 +5,14 @@ | ||||
| # first so "all" becomes default target | ||||
| all: all-yes | ||||
|  | ||||
| DEFAULT_YASMD=.dbg | ||||
|  | ||||
| ifndef DBG | ||||
| YASMD= | ||||
| else | ||||
| YASMD=$(DEFAULT_YASMD) | ||||
| endif | ||||
|  | ||||
| ifndef SUBDIR | ||||
|  | ||||
| ifndef V | ||||
| @@ -138,7 +146,7 @@ $(TOOLOBJS): | tools | ||||
|  | ||||
| OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SLIBOBJS) $(TESTOBJS)) | ||||
|  | ||||
| CLEANSUFFIXES     = *.d *.o *~ *.h.c *.map *.ver *.ho *.gcno *.gcda | ||||
| CLEANSUFFIXES     = *.d *.o *~ *.h.c *.map *.ver *.ho *.gcno *.gcda *$(DEFAULT_YASMD).asm | ||||
| DISTCLEANSUFFIXES = *.pc | ||||
| LIBSUFFIXES       = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a | ||||
|  | ||||
|   | ||||
| @@ -7,6 +7,11 @@ V | ||||
|     Disable the default terse mode, the full command issued by make and its | ||||
|     output will be shown on the screen. | ||||
|  | ||||
| DBG | ||||
|     Preprocess x86 external assembler files to a .dbg.asm file in the object | ||||
|     directory, which then gets compiled. Helps developping those assembler | ||||
|     files. | ||||
|  | ||||
| DESTDIR | ||||
|     Destination directory for the install targets, useful to prepare packages | ||||
|     or install FFmpeg in cross-environments. | ||||
|   | ||||
| @@ -191,6 +191,11 @@ __asm__() block. | ||||
| Use external asm (nasm/yasm) or inline asm (__asm__()), do not use intrinsics. | ||||
| The latter requires a good optimizing compiler which gcc is not. | ||||
|  | ||||
| When debugging a x86 external asm compilation issue, if lost in the macro | ||||
| expansions, add DBG=1 to your make command-line: the input file will be | ||||
| preprocessed, stripped of the debug/empty lines, then compiled, showing the | ||||
| actual lines causing issues. | ||||
|  | ||||
| Inline asm vs. external asm | ||||
| --------------------------- | ||||
| Both inline asm (__asm__("..") in a .c file, handled by a compiler such as gcc) | ||||
|   | ||||
| @@ -22,7 +22,11 @@ $(SUBDIR)%-test.i: $(SUBDIR)%-test.c | ||||
| $(SUBDIR)%-test.i: $(SUBDIR)%.c | ||||
| 	$(CC) $(CCFLAGS) $(CC_E) $< | ||||
|  | ||||
| $(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm | ||||
| $(SUBDIR)x86/%$(DEFAULT_YASMD).asm: $(SUBDIR)x86/%.asm | ||||
| 	$(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.asm=.d) | ||||
| 	$(YASM) $(YASMFLAGS) -I $(<D)/ -e $< | sed '/^%/d;/^$$/d;' > $@ | ||||
|  | ||||
| $(SUBDIR)x86/%.o: $(SUBDIR)x86/%$(YASMD).asm | ||||
| 	$(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d) | ||||
| 	$(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $< | ||||
| 	-$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user