diff --git a/common.mak b/common.mak index a493792657..a6fabb300a 100644 --- a/common.mak +++ b/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 diff --git a/doc/build_system.txt b/doc/build_system.txt index 2efde5ce02..20242b1353 100644 --- a/doc/build_system.txt +++ b/doc/build_system.txt @@ -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. diff --git a/doc/optimization.txt b/doc/optimization.txt index 94a4277326..1a0b98cd0e 100644 --- a/doc/optimization.txt +++ b/doc/optimization.txt @@ -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) diff --git a/library.mak b/library.mak index 72e5574386..e23abd2251 100644 --- a/library.mak +++ b/library.mak @@ -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 $( $(@:.asm=.d) + $(YASM) $(YASMFLAGS) -I $( $@ + +$(SUBDIR)x86/%.o: $(SUBDIR)x86/%$(YASMD).asm $(DEPYASM) $(YASMFLAGS) -I $( $(@:.o=.d) $(YASM) $(YASMFLAGS) -I $(