[vlc-devel] [PATCH] build: support YASM targets
Luca Barbato
lu_zero at gentoo.org
Fri Oct 25 00:37:52 CEST 2013
The files must be .asm
---
Initial working version, sent as preview.
Something slightly better will come later possibly, feedbacks welcome nonetheless.
configure.ac | 21 +++++++++++++++++++++
m4/dolt.m4 | 50 ++++++++++++++++++++++++--------------------------
modules/common.am | 5 +++++
3 files changed, 50 insertions(+), 26 deletions(-)
diff --git a/configure.ac b/configure.ac
index ecf1bdd..219079a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -79,6 +79,7 @@ AM_PROG_AS
AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)
+AC_CHECK_PROGS(YASM, yasm)
dnl Check for compiler properties
AC_C_CONST
@@ -102,6 +103,17 @@ dnl
dnl Check the operating system
dnl
HAVE_WIN64="0"
+
+case "${host}" in
+ i?86*)
+ YASMFLAGS="-f elf32"
+ ;;
+ x86_64*)
+ YASMFLAGS="-f elf64"
+ ;;
+esac
+
+
case "${host_os}" in
"")
SYS=unknown
@@ -137,6 +149,7 @@ case "${host_os}" in
case "${host}" in
i?86*)
ARCH_flag="-arch i386"
+ YASMFLAGS="-f macho32"
;;
ppc64*)
ARCH_flag="-arch ppc64"
@@ -146,6 +159,7 @@ case "${host_os}" in
;;
x86_64*)
ARCH_flag="-arch x86_64"
+ YASMFLAGS="-f macho64"
;;
arm*)
ac_cv_c_bigendian="no"
@@ -243,10 +257,12 @@ case "${host_os}" in
HAVE_WIN64="1"
WINDOWS_ARCH="x64"
PROGRAMFILES="PROGRAMFILES64"
+ YASMFLAGS="-f win64"
;;
*)
WINDOWS_ARCH="x86"
PROGRAMFILES="PROGRAMFILES"
+ YASMFLAGS="-f win32"
;;
esac
AC_SUBST(WINDOWS_ARCH)
@@ -265,13 +281,16 @@ case "${host_os}" in
;;
symbian*)
SYS=symbian
+ YASMFLAGS=""
;;
*os2*)
SYS=os2
LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild"
+ YASMFLAGS=""
;;
*)
SYS="${host_os}"
+ YASMFLAGS=""
;;
esac
AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
@@ -281,6 +300,8 @@ AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
AM_CONDITIONAL(HAVE_WIN64, test "${HAVE_WIN64}" = "1")
AM_CONDITIONAL(HAVE_SYMBIAN, test "${SYS}" = "symbian")
+AC_SUBST(YASMFLAGS)
+
dnl
dnl Sadly autoconf does not think about testing foo.exe when ask to test
dnl for program foo on win32
diff --git a/m4/dolt.m4 b/m4/dolt.m4
index d14bbe7..ff28bef 100644
--- a/m4/dolt.m4
+++ b/m4/dolt.m4
@@ -12,36 +12,24 @@ AC_DEFUN([DOLT], [
AC_REQUIRE([AC_CANONICAL_HOST])
# dolt, a replacement for libtool
# Josh Triplett <josh at freedesktop.org>
-AC_PATH_PROG(DOLT_BASH, bash)
+AC_PATH_PROG([DOLT_BASH], [bash])
AC_MSG_CHECKING([if dolt supports this host])
dolt_supported=yes
-if test x$DOLT_BASH = x; then
- dolt_supported=no
-fi
-if test x$GCC != xyes; then
- dolt_supported=no
-fi
-case $host in
-*-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*)
- pic_options='-fPIC'
- ;;
-*-apple-darwin*)
- pic_options='-fno-common'
- ;;
-*mingw*|*nacl*)
- pic_options=''
- ;;
-*)
- dolt_supported=no
- ;;
-esac
-if test x$dolt_supported = xno ; then
+AS_IF([test x$DOLT_BASH = x], [dolt_supported=no])
+AS_IF([test x$GCC != xyes], [dolt_supported=no])
+
+AS_CASE([$host],
+ [*-*-linux*|*-*-freebsd*], [pic_options='-fPIC'],
+ [*-apple-darwin*], [pic_options='-fno-common'],
+ [*mingw*|*nacl*], [pic_options='']
+ [*], [dolt_supported=no]
+)
+AS_IF([test x$dolt_supported = xno], [
AC_MSG_RESULT([no, falling back to libtool])
LTCOMPILE='$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
LTCXXCOMPILE='$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
m4_pattern_allow([AM_V_lt])
-else
+], [
AC_MSG_RESULT([yes, replacing libtool])
dnl Start writing out doltcompile.
@@ -85,7 +73,13 @@ pic_object="$libobjdir/$objbase.o"
args@<:@$objarg@:>@="$pic_object"
__DOLTCOMPILE__EOF__
cat <<__DOLTCOMPILE__EOF__ >>doltcompile
-"\${args@<:@@@:>@}" $pic_options -DPIC || exit \$?
+ pic_options="$pic_options"
+ if test x\$passthrough = xtrue; then
+ pic_options=""
+ fi
+__DOLTCOMPILE__EOF__
+ cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
+${args@<:@@@:>@} $pic_options -DPIC || exit $?
__DOLTCOMPILE__EOF__
fi
@@ -161,6 +155,7 @@ for arg in "$[]@"; do
case "$arg" in
--mode=compile) modeok=true ;;
--tag=CC|--tag=CXX) tagok=true ;;
+ --tag=ASM|--tag=YASM) tagok=true; passthrough=true;;
--silent|--quiet) ;;
*) args@<:@${#args[@]}@:>@="$arg" ;;
esac
@@ -175,7 +170,10 @@ __DOLTLIBTOOL__EOF__
dnl Done writing out doltlibtool; substitute it for libtool.
chmod +x doltlibtool
LIBTOOL='$(top_builddir)/doltlibtool'
-fi
+
+DOLT_CLEANFILES="doltlibtool doltcompile"
+AC_SUBST(DOLT_CLEANFILES)
+])
AC_SUBST(LTCOMPILE)
AC_SUBST(LTCXXCOMPILE)
# end dolt
diff --git a/modules/common.am b/modules/common.am
index 94fb399..9f78fb9 100644
--- a/modules/common.am
+++ b/modules/common.am
@@ -35,3 +35,8 @@ AM_LDFLAGS = \
if HAVE_WIN32
AM_LDFLAGS += $(top_builddir)/modules/module.rc.lo
endif
+
+SUFFIXES = .asm
+
+.asm.lo:
+ $(LIBTOOL) --mode=compile --tag=ASM $(YASM) $(YASMFLAGS) $< -o $@
--
1.8.3.2
More information about the vlc-devel
mailing list