Hi,

comment inline

On 04/03/2015 19:53, Jeff Waugh wrote:
> Hi all,
> 
> I'm sure there are style weirdnesses with this. Commentary much appreciated!
> 
> - Jeff
> 
> 
> - It won't work with uClibc 0.99.33.x because it requires make/get/setcontext
> - It DOES work with a recent uClibc snapshot (with UCLIBC_HAS_CONTEXT_FUNCS),
>   as well as eglibc
> - It works with gcc 4.8, and 4.9 with an additional fix submitted separately
> 
> Only very slightly adapted from Geert-Johan Riemer's work, plus fixes on top.
> - https://github.com/GeertJohan/openwrt-go/tree/add-gccgo-and-libgo
> - https://lists.openwrt.org/pipermail/openwrt-devel/2014-January/023214.html
> 
> Signed-off-by: Jeff Waugh <j...@bethesignal.org>
> ---
>  package/libs/toolchain/Makefile                    | 42 
> ++++++++++++++++++++++
>  toolchain/gcc/Config.in                            |  7 ++++
>  toolchain/gcc/common.mk                            |  2 +-
>  .../400-libgo-do-not-redefine-CPU_COUNT.patch      | 15 ++++++++
>  .../patches/4.8-linaro/401-go1-needs-libm.patch    | 11 ++++++

this patch causes a build error when building gcc 4.8 as it does not apply.

        John


>  .../patches/4.9-linaro/401-go1-needs-libm.patch    | 11 ++++++
>  6 files changed, 87 insertions(+), 1 deletion(-)
>  create mode 100644 
> toolchain/gcc/patches/4.8-linaro/400-libgo-do-not-redefine-CPU_COUNT.patch
>  create mode 100644 toolchain/gcc/patches/4.8-linaro/401-go1-needs-libm.patch
>  create mode 100644 toolchain/gcc/patches/4.9-linaro/401-go1-needs-libm.patch
> 
> diff --git a/package/libs/toolchain/Makefile b/package/libs/toolchain/Makefile
> index 42b9935..2666d5a 100644
> --- a/package/libs/toolchain/Makefile
> +++ b/package/libs/toolchain/Makefile
> @@ -254,6 +254,34 @@ define Package/libgfortran/config
>       endmenu
>  endef
>  
> +
> +define Package/libgo
> +$(call Package/gcc/Default)
> +  TITLE:=Go support library
> +  DEPENDS+=@INSTALL_GCCGO
> +endef
> +
> +define Package/libgo/config
> +     menu "Configuration"
> +             depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgo
> +
> +     config LIBGO_ROOT_DIR
> +             string
> +             prompt "libgo shared library base directory"
> +             depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgo
> +             default TOOLCHAIN_ROOT  if !NATIVE_TOOLCHAIN
> +             default "/"  if NATIVE_TOOLCHAIN
> +
> +     config LIBGO_FILE_SPEC
> +             string
> +             prompt "libgo shared library files (use wildcards)"
> +             depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgo
> +             default "./usr/lib/libgo.so.*"
> +
> +     endmenu
> +endef
> +
> +
>  define Package/ldd
>  $(call Package/libc/Default)
>    DEPENDS:=@!USE_MUSL
> @@ -410,6 +438,11 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
>       $(if $(CONFIG_TARGET_avr32)$(CONFIG_TARGET_coldfire),,$(CP) 
> $(TOOLCHAIN_DIR)/lib/libgfortran.so.* $(1)/usr/lib/)
>    endef
>  
> +  define Package/libgo/install
> +     $(INSTALL_DIR) $(1)/usr/lib
> +     $(if 
> $(CONFIG_GCC_VERSION_4_6)$(CONFIG_TARGET_avr32)$(CONFIG_TARGET_coldfire),,$(CP)
>  $(TOOLCHAIN_DIR)/lib/libgo.so.* $(1)/usr/lib/)
> +  endef
> +
>    define Package/libssp/install
>       $(INSTALL_DIR) $(1)/lib
>       $(CP) $(TOOLCHAIN_DIR)/lib/libssp.so.* $(1)/lib/
> @@ -559,6 +592,14 @@ else
>       done
>    endef
>  
> +  define Package/libgo/install
> +     for file in $(call qstrip,$(CONFIG_LIBGO_FILE_SPEC)); do \
> +             dir=`dirname $$$$file` ; \
> +             $(INSTALL_DIR) $(1)/$$$$dir ; \
> +             $(CP) $(call qstrip,$(CONFIG_LIBGO_ROOT_DIR))/$$$$file 
> $(1)/$$$$dir/ ; \
> +     done
> +  endef
> +
>    define Package/libssp/install
>       for file in $(call qstrip,$(CONFIG_LIBSSP_FILE_SPEC)); do \
>               dir=`dirname $$$$file` ; \
> @@ -642,5 +683,6 @@ $(eval $(call BuildPackage,libpthread))
>  $(eval $(call BuildPackage,libthread-db))
>  $(eval $(call BuildPackage,librt))
>  $(eval $(call BuildPackage,libgfortran))
> +$(eval $(call BuildPackage,libgo))
>  $(eval $(call BuildPackage,ldd))
>  $(eval $(call BuildPackage,ldconfig))
> diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in
> index ecd7c26..ec87d32 100644
> --- a/toolchain/gcc/Config.in
> +++ b/toolchain/gcc/Config.in
> @@ -74,3 +74,10 @@ config INSTALL_GFORTRAN
>       default n
>       help
>           Build/install GNU fortran compiler ?
> +
> +config INSTALL_GCCGO
> +     bool
> +     prompt "Build/install gccgo compiler?" if TOOLCHAINOPTS && 
> !(GCC_VERSION_4_4_7 || GCC_VERSION_4_6 || GCC_VERSION_4_6_LINARO) && 
> !UCLIBC_VERSION_0_9_33
> +     default n
> +     help
> +         Build/install GNU gccgo compiler ?
> diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk
> index 925964e..9c01bbd 100644
> --- a/toolchain/gcc/common.mk
> +++ b/toolchain/gcc/common.mk
> @@ -99,7 +99,7 @@ HOST_STAMP_CONFIGURED:=$(GCC_BUILD_DIR)/.configured
>  HOST_STAMP_INSTALLED:=$(STAGING_DIR_HOST)/stamp/.gcc_$(GCC_VARIANT)_installed
>  
>  SEP:=,
> -TARGET_LANGUAGES:="c,c++$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)$(if 
> $(CONFIG_INSTALL_GFORTRAN),$(SEP)fortran)"
> +TARGET_LANGUAGES:="c,c++$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)$(if 
> $(CONFIG_INSTALL_GFORTRAN),$(SEP)fortran)$(if 
> $(CONFIG_INSTALL_GCCGO),$(SEP)go)"
>  
>  export libgcc_cv_fixed_point=no
>  ifdef CONFIG_USE_UCLIBC
> diff --git 
> a/toolchain/gcc/patches/4.8-linaro/400-libgo-do-not-redefine-CPU_COUNT.patch 
> b/toolchain/gcc/patches/4.8-linaro/400-libgo-do-not-redefine-CPU_COUNT.patch
> new file mode 100644
> index 0000000..a6ba713
> --- /dev/null
> +++ 
> b/toolchain/gcc/patches/4.8-linaro/400-libgo-do-not-redefine-CPU_COUNT.patch
> @@ -0,0 +1,15 @@
> +https://sourceware.org/ml/crossgcc/2014-09/msg00034.html
> +
> +--- a/libgo/runtime/getncpu-linux.c
> ++++ b/libgo/runtime/getncpu-linux.c
> +@@ -5,8 +5,8 @@
> + #include <features.h>
> + #include <sched.h>
> + 
> +-// CPU_COUNT is only provided by glibc 2.6 or higher
> +-#if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 6)
> ++// Define CPU_COUNT if it isn't already.
> ++#if !defined(CPU_COUNT)
> + #define CPU_COUNT(set) _CPU_COUNT((unsigned int *)(set), 
> sizeof(*(set))/sizeof(unsigned int))
> + static int _CPU_COUNT(unsigned int *set, size_t len) {
> +     int cnt;
> diff --git a/toolchain/gcc/patches/4.8-linaro/401-go1-needs-libm.patch 
> b/toolchain/gcc/patches/4.8-linaro/401-go1-needs-libm.patch
> new file mode 100644
> index 0000000..1b92a0a
> --- /dev/null
> +++ b/toolchain/gcc/patches/4.8-linaro/401-go1-needs-libm.patch
> @@ -0,0 +1,11 @@
> +--- a/gcc/go/Make-lang.in    2015-03-05 02:40:05.246555190 +1100
> ++++ b/gcc/go/Make-lang.in    2015-03-05 02:40:18.414555609 +1100
> +@@ -75,7 +75,7 @@
> + 
> + go1$(exeext): $(GO_OBJS) attribs.o $(BACKEND) $(LIBDEPS)
> +     +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
> +-          $(GO_OBJS) attribs.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
> ++          $(GO_OBJS) attribs.o $(BACKEND) $(LIBS) $(BACKENDLIBS) -lm
> + 
> + # Documentation.
> + 
> diff --git a/toolchain/gcc/patches/4.9-linaro/401-go1-needs-libm.patch 
> b/toolchain/gcc/patches/4.9-linaro/401-go1-needs-libm.patch
> new file mode 100644
> index 0000000..1b92a0a
> --- /dev/null
> +++ b/toolchain/gcc/patches/4.9-linaro/401-go1-needs-libm.patch
> @@ -0,0 +1,11 @@
> +--- a/gcc/go/Make-lang.in    2015-03-05 02:40:05.246555190 +1100
> ++++ b/gcc/go/Make-lang.in    2015-03-05 02:40:18.414555609 +1100
> +@@ -75,7 +75,7 @@
> + 
> + go1$(exeext): $(GO_OBJS) attribs.o $(BACKEND) $(LIBDEPS)
> +     +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
> +-          $(GO_OBJS) attribs.o $(BACKEND) $(LIBS) $(BACKENDLIBS)
> ++          $(GO_OBJS) attribs.o $(BACKEND) $(LIBS) $(BACKENDLIBS) -lm
> + 
> + # Documentation.
> + 
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to