aboutsummaryrefslogtreecommitdiff
path: root/libgo/configure.ac
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2016-09-11 13:23:27 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2016-09-11 13:23:27 +0000
commit91d733e1ca11bfb60afa7191b1fba12cc4966f76 (patch)
tree0815e13095e63e030ca2a15736d99e36938b55cb /libgo/configure.ac
parent08d6d42cdddb65709440fcc514d72d1adbee9c72 (diff)
runtime/internal/sys: new package, API copied from Go 1.7
Copy over the Go 1.7 runtime/internal/sys package, but instead of having separate files for each GOARCH and GOOS value, set the values in configure.ac and write them out in Makefile.am. Setting the values in configure.ac should make it easier to add new processors. Remove the automake GOARCH conditionals, which are no longer used. Leave the GOOS conditionals for now, as they are used for the C runtime package. Reviewed-on: https://go-review.googlesource.com/29018 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@240083 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo/configure.ac')
-rw-r--r--libgo/configure.ac190
1 files changed, 121 insertions, 69 deletions
diff --git a/libgo/configure.ac b/libgo/configure.ac
index 21ece733f34..f33854503e3 100644
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -142,6 +142,11 @@ AC_SUBST(LIBATOMIC)
go_include="-include"
AC_SUBST(go_include)
+# All known GOOS values. This is the union of all operating systems
+# supported by the gofrontend and all operating systems supported by
+# the gc toolchain.
+ALLGOOS="android darwin dragonfly freebsd irix linux netbsd openbsd plan9 rtems solaris windows"
+
is_darwin=no
is_freebsd=no
is_irix=no
@@ -174,6 +179,7 @@ AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes)
AM_CONDITIONAL(LIBGO_IS_SOLARIS, test $is_solaris = yes)
AM_CONDITIONAL(LIBGO_IS_BSD, test $is_darwin = yes -o $is_dragonfly = yes -o $is_freebsd = yes -o $is_netbsd = yes -o $is_openbsd = yes)
AC_SUBST(GOOS)
+AC_SUBST(ALLGOOS)
dnl Test whether we need to use DejaGNU or whether we can use the
dnl simpler gotest approach. We can only use gotest for a native
@@ -186,35 +192,46 @@ case ${host} in
esac
AC_SUBST(USE_DEJAGNU)
-dnl N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch).
-is_386=no
-is_alpha=no
-is_arm=no
-is_arm64=no
-is_ia64=no
-is_m68k=no
-mips_abi=unknown
-is_ppc=no
-is_ppc64=no
-is_ppc64le=no
-is_s390=no
-is_s390x=no
-is_sparc=no
-is_sparc64=no
-is_x86_64=no
+# All known GOARCH values. This is the union of all architectures
+# supported by the gofrontend and all architectures supported by the
+# gc toolchain.
+# N.B. Keep in sync with gcc/testsuite/go.test/go-test.exp (go-set-goarch).
+ALLGOARCH="386 alpha amd64 amd64p32 arm armbe arm64 arm64be ia64 m68k mipso32 mipsn32 mipso64 mipsn64 mips mipsle mips64 mips64le mips64p32 mips64pe32le ppc ppc64 ppc64le s390 s390x sparc sparc64"
+
+# All known GOARCH_FAMILY values.
+ALLGOARCHFAMILY="I386 ALPHA AMD64 ARM ARM64 IA64 M68K MIPS MIPS64 PPC PPC64 S390 S390X SPARC SPARC64"
+
GOARCH=unknown
+GOARCH_FAMILY=unknown
+GOARCH_BIGENDIAN=0
+GOARCH_CACHELINESIZE=64
+GOARCH_PHYSPAGESIZE=4096
+GOARCH_PCQUANTUM=1
+GOARCH_INT64ALIGN=8
+GOARCH_HUGEPAGESIZE=0
+GOARCH_MINFRAMESIZE=0
case ${host} in
alpha*-*-*)
- is_alpha=yes
GOARCH=alpha
+ GOARCH_FAMILY=ALPHA
+ GOARCH_PHYSPAGESIZE=8192
+ GOARCH_PCQUANTUM=4
;;
aarch64-*-*)
- is_arm64=yes
GOARCH=arm64
+ GOARCH_FAMILY=ARM64
+ GOARCH_CACHELINESIZE=32
+ GOARCH_PHYSPAGESIZE=65536
+ GOARCH_PCQUANTUm=4
+ GOARCH_MINFRAMESIZE=8
;;
arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*)
- is_arm=yes
GOARCH=arm
+ GOARCH_FAMILY=ARM
+ GOARCH_CACHELINESIZE=32
+ GOARCH_PCQUANTUM=4
+ GOARCH_INT64ALIGN=4
+ GOARCH_MINFRAMESIZE=4
;;
changequote(,)dnl
i[34567]86-*-* | x86_64-*-*)
@@ -223,20 +240,29 @@ changequote([,])dnl
#ifdef __x86_64__
#error 64-bit
#endif],
-[is_386=yes], [is_x86_64=yes])
- if test "$is_386" = "yes"; then
- GOARCH=386
- else
- GOARCH=amd64
- fi
+[GOARCH=386
+GOARCH_FAMILY=I386
+GOARCH_INT64ALIGN=4
+GOARCH_HUGEPAGESIZE="1 << 21"
+],
+[GOARCH=amd64
+GOARCH_FAMILY=AMD64
+GOARCH_HUGEPAGESIZE="1 << 21"
+])
;;
ia64-*-*)
- is_ia64=yes
GOARCH=ia64
+ GOARCH_FAMILY=IA64
+ GOARCH_CACHELINESIZE=16384
+ GOARCH_PHYSPAGESIZE=8192
;;
m68k*-*-*)
- is_m68k=yes
GOARCH=m68k
+ GOARCH_FAMILY=M68K
+ GOARCH_BIGENDIAN=1
+ GOARCH_CACHELINESIZE=16
+ GOARCH_PCQUANTUM=4
+ GOARCH_INT64ALIGN=4
;;
mips*-*-*)
AC_COMPILE_IFELSE([
@@ -267,72 +293,98 @@ changequote([,])dnl
"n64") GOARCH=mipsn64 ;;
"o64") GOARCH=mipso64 ;;
esac
+ case "$mips_abi" in
+ "o32" | "n32")
+ GOARCH_FAMILY=MIPS
+ GOARCH_INT64ALIGN=4
+ GOARCH_MINFRAMESIZE=4
+ ;;
+ "n64" | "o64")
+ GOARCH_FAMILY=MIPS64
+ GOARCH_MINFRAMESIZE=8
+ ;;
+ esac
+ case "${host}" in
+ mips*el)
+ ;;
+ *)
+ GOARCH_BIGENDIAN=1
+ ;;
+ esac
+ GOARCH_CACHELINESIZE=32
+ GOARCH_PHYSPAGESIZE=16384
+ GOARCH_PCQUANTUM=4
;;
rs6000*-*-* | powerpc*-*-*)
AC_COMPILE_IFELSE([
#ifdef _ARCH_PPC64
#error 64-bit
#endif],
-[is_ppc=yes],
- [AC_COMPILE_IFELSE([
+[GOARCH=ppc
+GOARCH_FAMILY=PPC
+GOARCH_BIGENDIAN=1
+GOARCH_INT64ALIGN=4
+],
+ [
+GOARCH_FAMILY=PPC64
+AC_COMPILE_IFELSE([
#if defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__)
#error 64be
#endif],
-[is_ppc64le=yes],[is_ppc64=yes])])
- if test "$is_ppc" = "yes"; then
- GOARCH=ppc
- elif test "$is_ppc64" = "yes"; then
- GOARCH=ppc64
- else
- GOARCH=ppc64le
- fi
+[GOARCH=ppc64le
+],
+[GOARCH=ppc64
+GOARCH_BIGENDIAN=1
+])])
+ GOARCH_PHYSPAGESIZE=65536
+ GOARCH_PCQUANTUM=4
+ GOARCH_MINFRAMESIZE=32
;;
s390*-*-*)
AC_COMPILE_IFELSE([
#if defined(__s390x__)
#error 64-bit
#endif],
-[is_s390=yes], [is_s390x=yes])
- if test "$is_s390" = "yes"; then
- GOARCH=s390
- else
- GOARCH=s390x
- fi
+[GOARCH=s390
+GOARCH_FAMILY=S390
+GOARCH_INT64ALIGN=4
+GOARCH_MINFRAMESIZE=4
+], [GOARCH=s390x
+GOARCH_FAMILY=S390X
+GOARCH_MINFRAMESIZE=8
+])
+ GOARCH_BIGENDIAN=1
+ GOARCH_CACHELINESIZE=256
+ GOARCH_PCQUANTUM=2
;;
sparc*-*-*)
AC_COMPILE_IFELSE([
#if defined(__sparcv9) || defined(__arch64__)
#error 64-bit
#endif],
-[is_sparc=yes], [is_sparc64=yes])
- if test "$is_sparc" = "yes"; then
- GOARCH=sparc
- else
- GOARCH=sparc64
- fi
+[GOARCH=sparc
+GOARCH_FAMILY=SPARC
+GOARCH_INT64ALIGN=4
+],
+[GOARCH=sparc64
+GOARCH_FAMILY=SPARC64
+])
+ GOARCH_BIGENDIAN=1
+ GOARCH_PHYSPAGESIZE=8192
+ GOARCH_PCQUANTUM=4
;;
esac
-AM_CONDITIONAL(LIBGO_IS_386, test $is_386 = yes)
-AM_CONDITIONAL(LIBGO_IS_ALPHA, test $is_alpha = yes)
-AM_CONDITIONAL(LIBGO_IS_ARM, test $is_arm = yes)
-AM_CONDITIONAL(LIBGO_IS_ARM64, test $is_arm64 = yes)
-AM_CONDITIONAL(LIBGO_IS_IA64, test $is_ia64 = yes)
-AM_CONDITIONAL(LIBGO_IS_M68K, test $is_m68k = yes)
-AM_CONDITIONAL(LIBGO_IS_MIPS, test $mips_abi != unknown)
-AM_CONDITIONAL(LIBGO_IS_MIPSO32, test $mips_abi = o32)
-AM_CONDITIONAL(LIBGO_IS_MIPSN32, test $mips_abi = n32)
-AM_CONDITIONAL(LIBGO_IS_MIPSN64, test $mips_abi = n64)
-AM_CONDITIONAL(LIBGO_IS_MIPSO64, test $mips_abi = o64)
-AM_CONDITIONAL(LIBGO_IS_MIPS64, test $mips_abi = n64 -o $mips_abi = o64)
-AM_CONDITIONAL(LIBGO_IS_PPC, test $is_ppc = yes)
-AM_CONDITIONAL(LIBGO_IS_PPC64, test $is_ppc64 = yes)
-AM_CONDITIONAL(LIBGO_IS_PPC64LE, test $is_ppc64le = yes)
-AM_CONDITIONAL(LIBGO_IS_S390, test $is_s390 = yes)
-AM_CONDITIONAL(LIBGO_IS_S390X, test $is_s390x = yes)
-AM_CONDITIONAL(LIBGO_IS_SPARC, test $is_sparc = yes)
-AM_CONDITIONAL(LIBGO_IS_SPARC64, test $is_sparc64 = yes)
-AM_CONDITIONAL(LIBGO_IS_X86_64, test $is_x86_64 = yes)
AC_SUBST(GOARCH)
+AC_SUBST(GOARCH_FAMILY)
+AC_SUBST(GOARCH_BIGENDIAN)
+AC_SUBST(GOARCH_CACHELINESIZE)
+AC_SUBST(GOARCH_PHYSPAGESIZE)
+AC_SUBST(GOARCH_PCQUANTUM)
+AC_SUBST(GOARCH_INT64ALIGN)
+AC_SUBST(GOARCH_HUGEPAGESIZE)
+AC_SUBST(GOARCH_MINFRAMESIZE)
+AC_SUBST(ALLGOARCH)
+AC_SUBST(ALLGOARCHFAMILY)
dnl Some files are only present when needed for specific architectures.
GO_LIBCALL_OS_FILE=