Originally committed as revision 14696 to svn://svn.ffmpeg.org/ffmpeg/trunk
Loren Merritt authored on 2008/08/12 08:53:31... | ... |
@@ -8,6 +8,7 @@ ifndef SUBDIR |
8 | 8 |
vpath %.c $(SRC_DIR) |
9 | 9 |
vpath %.h $(SRC_DIR) |
10 | 10 |
vpath %.S $(SRC_DIR) |
11 |
+vpath %.asm $(SRC_DIR) |
|
11 | 12 |
|
12 | 13 |
ifeq ($(SRC_DIR),$(SRC_PATH_BARE)) |
13 | 14 |
BUILD_ROOT_REL = . |
... | ... |
@@ -96,6 +97,12 @@ $(SUBDIR)%-test.o: $(SUBDIR)%.c |
96 | 96 |
$(SUBDIR)%-test.o: $(SUBDIR)%-test.c |
97 | 97 |
$(CC) $(CFLAGS) -DTEST -c -o $$@ $$^ |
98 | 98 |
|
99 |
+$(SUBDIR)i386/%.o: $(SUBDIR)i386/%.asm |
|
100 |
+ $(YASM) $(YASMFLAGS) -I $$(<D)/ -o $$@ $$< |
|
101 |
+ |
|
102 |
+$(SUBDIR)i386/%.d: $(SUBDIR)i386/%.asm |
|
103 |
+ $(YASM) $(YASMFLAGS) -I $$(<D)/ -M -o $$(@:%.d=%.o) $$< > $$@ |
|
104 |
+ |
|
99 | 105 |
clean:: |
100 | 106 |
rm -f $(TESTS) $(addprefix $(SUBDIR),$(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \ |
101 | 107 |
$(addprefix $(SUBDIR), $(foreach suffix,$(CLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS)))) |
... | ... |
@@ -445,6 +445,14 @@ int foo(void){ asm volatile($asm); } |
445 | 445 |
EOF |
446 | 446 |
} |
447 | 447 |
|
448 |
+check_yasm(){ |
|
449 |
+ log check_yasm "$@" |
|
450 |
+ echo "$1" > $TMPS |
|
451 |
+ log_file $TMPS |
|
452 |
+ shift 1 |
|
453 |
+ check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS |
|
454 |
+} |
|
455 |
+ |
|
448 | 456 |
check_ld(){ |
449 | 457 |
log check_ld "$@" |
450 | 458 |
check_cc || return |
... | ... |
@@ -781,6 +789,7 @@ HAVE_LIST=" |
781 | 781 |
termios_h |
782 | 782 |
threads |
783 | 783 |
winsock2_h |
784 |
+ yasm |
|
784 | 785 |
" |
785 | 786 |
|
786 | 787 |
CMDLINE_SELECT=" |
... | ... |
@@ -930,12 +939,14 @@ shlibdir_default="$libdir_default" |
930 | 930 |
|
931 | 931 |
# toolchain |
932 | 932 |
cc="gcc" |
933 |
+yasmexe="yasm" |
|
933 | 934 |
ar="ar" |
934 | 935 |
nm="nm" |
935 | 936 |
ranlib="ranlib" |
936 | 937 |
strip="strip" |
937 | 938 |
asmalign_pot="unknown" |
938 | 939 |
ln_s="ln -sf" |
940 |
+objformat="elf" |
|
939 | 941 |
|
940 | 942 |
# machine |
941 | 943 |
arch=`uname -m` |
... | ... |
@@ -1091,6 +1102,7 @@ echo "# $0 $@" > $logfile |
1091 | 1091 |
set >> $logfile |
1092 | 1092 |
|
1093 | 1093 |
cc="${cross_prefix}${cc}" |
1094 |
+yasmexe="${cross_prefix}${yasmexe}" |
|
1094 | 1095 |
ar="${cross_prefix}${ar}" |
1095 | 1096 |
nm="${cross_prefix}${nm}" |
1096 | 1097 |
ranlib="${cross_prefix}${ranlib}" |
... | ... |
@@ -1245,6 +1257,7 @@ case $target_os in |
1245 | 1245 |
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' |
1246 | 1246 |
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' |
1247 | 1247 |
FFSERVERLDFLAGS=-Wl,-bind_at_load |
1248 |
+ objformat="macho" |
|
1248 | 1249 |
;; |
1249 | 1250 |
mingw32*) |
1250 | 1251 |
target_os=mingw32 |
... | ... |
@@ -1271,6 +1284,7 @@ case $target_os in |
1271 | 1271 |
install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"' |
1272 | 1272 |
SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"' |
1273 | 1273 |
SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base' |
1274 |
+ objformat="win32" |
|
1274 | 1275 |
;; |
1275 | 1276 |
cygwin*) |
1276 | 1277 |
target_os=cygwin |
... | ... |
@@ -1287,12 +1301,14 @@ case $target_os in |
1287 | 1287 |
SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' |
1288 | 1288 |
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' |
1289 | 1289 |
SHFLAGS='-shared -Wl,--enable-auto-image-base' |
1290 |
+ objformat="win32" |
|
1290 | 1291 |
;; |
1291 | 1292 |
*-dos|freedos|opendos) |
1292 | 1293 |
disable ffplay ffserver vhook |
1293 | 1294 |
disable $INDEV_LIST $OUTDEV_LIST |
1294 | 1295 |
network_extralibs="-lsocket" |
1295 | 1296 |
EXESUF=".exe" |
1297 |
+ objformat="win32" |
|
1296 | 1298 |
;; |
1297 | 1299 |
linux) |
1298 | 1300 |
enable dv1394 |
... | ... |
@@ -1535,6 +1551,15 @@ EOF |
1535 | 1535 |
enabled mmx2 && check_asm mmx2 '"movss %xmm0, %xmm0"' |
1536 | 1536 |
|
1537 | 1537 |
check_asm bswap '"bswap %%eax" ::: "%eax"' |
1538 |
+ |
|
1539 |
+ YASMFLAGS="-f $objformat -DARCH_$(toupper $arch)" |
|
1540 |
+ enabled x86_64 && append YASMFLAGS "-m amd64" |
|
1541 |
+ enabled_all x86_64 shared && append YASMFLAGS "-DPIC" |
|
1542 |
+ case "$objformat" in |
|
1543 |
+ elf) enabled debug && append YASMFLAGS "-g dwarf2" ;; |
|
1544 |
+ *) append YASMFLAGS "-DPREFIX" ;; |
|
1545 |
+ esac |
|
1546 |
+ check_yasm "pabsw xmm0, xmm0" && enable yasm |
|
1538 | 1547 |
fi |
1539 | 1548 |
|
1540 | 1549 |
# check for assembler specific support |
... | ... |
@@ -2028,6 +2053,7 @@ echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak |
2028 | 2028 |
echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak |
2029 | 2029 |
echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak |
2030 | 2030 |
echo "CC=$cc" >> config.mak |
2031 |
+echo "YASM=$yasmexe" >> config.mak |
|
2031 | 2032 |
echo "AR=$ar" >> config.mak |
2032 | 2033 |
echo "RANLIB=$ranlib" >> config.mak |
2033 | 2034 |
echo "LN_S=$ln_s" >> config.mak |
... | ... |
@@ -2040,6 +2066,7 @@ echo "VHOOKCFLAGS=$VHOOKCFLAGS" >> config.mak |
2040 | 2040 |
echo "LDFLAGS=$LDFLAGS" >> config.mak |
2041 | 2041 |
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak |
2042 | 2042 |
echo "SHFLAGS=$SHFLAGS" >> config.mak |
2043 |
+echo "YASMFLAGS=$YASMFLAGS" >> config.mak |
|
2043 | 2044 |
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak |
2044 | 2045 |
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak |
2045 | 2046 |
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak |