[OpenWrt-Devel] [PATCH] toolchain: Replace YASM with NASM

Rosen Penev rosenp at gmail.com
Sat Jun 30 14:51:17 EDT 2018


On Sat, Jun 30, 2018 at 7:26 AM Ted Hess <thess at kitschensync.net> wrote:
>
>
> Rather than doing this directly without warning - I am making this request
> for review...
>
> Packages libx264 and ffmpeg are built with ASM options on x86 platforms.
> The current libx264 version no longer builds with YASM and requires NASM.
> ffmpeg 3.x can be built with either YASM or NASM however, furture 4.x versions
> will require NASM.
>
> This change will replace the YASM assembler in the toolchain with NASM. Both
> packages have been test with this change. I don't know of any other packages
> which explicitly use an external assembler so I feel comfortable with
> replacing the assembler instead of adding another.
>
> After this patch is merged, the PR for these packages on Github
>     https://github.com/openwrt/packages/pull/6383
> needs to be merged.
>
> /ted
>
> Signed-off-by: Ted Hess <thess at kitschensync.net>
Acked-by: Rosen Penev <rosenp at gmail.com>

this is also needed for libjpeg-turbo as it does not seem to support
YASM anymore. YASM was generating bad JPEGs a while back.
> ---
>  toolchain/Config.in               |  6 +++---
>  toolchain/Makefile                |  2 +-
>  toolchain/{yasm => nasm}/Makefile | 25 +++++++++----------------
>  3 files changed, 13 insertions(+), 20 deletions(-)
>  rename toolchain/{yasm => nasm}/Makefile (65%)
>
> diff --git a/toolchain/Config.in b/toolchain/Config.in
> index 96acf1e5c4..47e1c787df 100644
> --- a/toolchain/Config.in
> +++ b/toolchain/Config.in
> @@ -224,13 +224,13 @@ comment "Compiler"
>
>  source "toolchain/gcc/Config.in"
>
> -config YASM
> +config NASM
>         bool
>         depends on ( i386 || x86_64 )
> -       prompt "Build yasm" if TOOLCHAINOPTS
> +       prompt "Build nasm" if TOOLCHAINOPTS
>         default y
>         help
> -         Enable if you want to build yasm
> +         Enable if you want to build nasm
>
>  comment "C Library"
>         depends on TOOLCHAINOPTS
> diff --git a/toolchain/Makefile b/toolchain/Makefile
> index 409955c23a..9432990f4f 100644
> --- a/toolchain/Makefile
> +++ b/toolchain/Makefile
> @@ -29,7 +29,7 @@
>  curdir:=toolchain
>
>  # subdirectories to descend into
> -$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),wrapper,kernel-headers binutils gcc/initial gcc/final $(LIBC) fortify-headers) $(if $(CONFIG_YASM),yasm)
> +$(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),wrapper,kernel-headers binutils gcc/initial gcc/final $(LIBC) fortify-headers) $(if $(CONFIG_NASM),nasm)
>  ifdef CONFIG_USE_UCLIBC
>    $(curdir)/builddirs += $(LIBC)/utils
>  endif
> diff --git a/toolchain/yasm/Makefile b/toolchain/nasm/Makefile
> similarity index 65%
> rename from toolchain/yasm/Makefile
> rename to toolchain/nasm/Makefile
> index e5cdac6fe9..a39c71f65f 100644
> --- a/toolchain/yasm/Makefile
> +++ b/toolchain/nasm/Makefile
> @@ -1,34 +1,26 @@
>  #
> -# Copyright (C) 2016 Daniel Golle <daniel at makrotopia.org>
> -#
>  # This is free software, licensed under the GNU General Public License v2.
>  # See /LICENSE for more information.
>  #
>  include $(TOPDIR)/rules.mk
>
> -PKG_NAME:=yasm
> -PKG_VERSION:=1.3.0
> +PKG_NAME:=nasm
> +PKG_VERSION:=2.13.03
>
> -PKG_SOURCE_URL:=http://www.tortall.net/projects/yasm/releases/
> -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
> +PKG_SOURCE_URL:=https://www.nasm.us/pub/nasm/releasebuilds/$(PKG_VERSION)/
> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
>
> -PKG_HASH:=3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f
> +PKG_HASH:=812ecfb0dcbc5bd409aaa8f61c7de94c5b8752a7b00c632883d15b2ed6452573
>
>  HOST_BUILD_PARALLEL:=1
>
>  include $(INCLUDE_DIR)/toolchain-build.mk
>
> -YASM_CONFIGURE:= \
> -       ./configure \
> -               --prefix=$(TOOLCHAIN_DIR) \
> -               --build=$(GNU_HOST_NAME) \
> -               --host=$(GNU_HOST_NAME) \
> +HOST_CONFIGURE_ARGS+= \
>                 --target=$(REAL_GNU_TARGET_NAME) \
>                 --with-sysroot=$(TOOLCHAIN_DIR) \
> -               --disable-multilib \
> +               --enable-lto \
>                 --disable-werror \
> -               --disable-nls \
> -               --disable-sim \
>                 --disable-gdb \
>                 $(SOFT_FLOAT_CONFIG_OPTION) \
>
> @@ -40,8 +32,9 @@ endef
>
>  define Host/Configure
>         (cd $(HOST_BUILD_DIR); \
> -               $(YASM_CONFIGURE) \
> +               ./autogen.sh \
>         );
> +       $(call Host/Configure/Default)
>  endef
>
>  define Host/Compile
> --
> 2.17.1
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list