diff options
Diffstat (limited to 'packaging/nacl')
21 files changed, 7415 insertions, 0 deletions
diff --git a/packaging/nacl/ports/jpeg8d/build.sh b/packaging/nacl/ports/jpeg8d/build.sh new file mode 100644 index 000000000..f37218c8d --- /dev/null +++ b/packaging/nacl/ports/jpeg8d/build.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Copyright (c) 2011 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +if [ "${NACL_SHARED}" = "1" ]; then + EXECUTABLES="rdjpgcom${NACL_EXEEXT} wrjpgcom${NACL_EXEEXT} \ + .libs/cjpeg${NACL_EXEEXT} .libs/djpeg${NACL_EXEEXT} \ + .libs/jpegtran${NACL_EXEEXT}" +else + EXECUTABLES="rdjpgcom${NACL_EXEEXT} wrjpgcom${NACL_EXEEXT} \ + cjpeg${NACL_EXEEXT} djpeg${NACL_EXEEXT} jpegtran${NACL_EXEEXT}" +fi + +TestStep() { +# export SEL_LDR_LIB_PATH=$PWD/.libs +# if [ "${NACL_ARCH}" = "pnacl" ]; then +# for arch in x86-32 x86-64; do +# for exe in ${EXECUTABLES}; do +# local exe_noext=${exe%.*} +# WriteSelLdrScriptForPNaCl ${exe_noext} ${exe_noext}.${arch}.nexe ${arch} +# done +# make test +# done +# else +# if [ "${NACL_SHARED}" = "1" ]; then +# for exe in ${EXECUTABLES}; do +# local script=$(basename ${exe%.*}) +# WriteSelLdrScript ${script} ${exe} +# done +# fi +# make test +# fi + return 0 +} diff --git a/packaging/nacl/ports/jpeg8d/pkg_info b/packaging/nacl/ports/jpeg8d/pkg_info new file mode 100644 index 000000000..2a452b202 --- /dev/null +++ b/packaging/nacl/ports/jpeg8d/pkg_info @@ -0,0 +1,6 @@ +NAME=jpeg8d +VERSION=8d +ARCHIVE_ROOT=jpeg-8d +URL=http://www.ijg.org/files/jpegsrc.v8d.tar.gz +LICENSE=CUSTOM:README +SHA1=f080b2fffc7581f7d19b968092ba9ebc234556ff diff --git a/packaging/nacl/ports/manaplus/build.sh b/packaging/nacl/ports/manaplus/build.sh new file mode 100755 index 000000000..5947f3b53 --- /dev/null +++ b/packaging/nacl/ports/manaplus/build.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Copyright (c) 2011 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +GitCloneStep() { + if CheckKeyStamp clone "$URL" ; then + Banner "Skipping git clone step" + return + fi + + local GIT_URL=${URL%@*} + rm -rf ${SRC_DIR} + mkdir ${SRC_DIR} + git clone ${GIT_URL} ${SRC_DIR} + + TouchKeyStamp clone "$URL" +} + +ConfigureStep() { + Banner "Configuring ${PACKAGE_NAME}" + + SetupCrossEnvironment + export PKG_CONFIG_PATH=${NACLPORTS_LIBDIR}/pkgconfig + export PKG_CONFIG_LIBDIR=${NACLPORTS_LIBDIR} + export SDL_CONFIG=${NACLPORTS_LIBDIR}/../bin/sdl-config + SDL_CFLAGS=`$SDL_CONFIG --cflags` + SDL_LIBS="-lSDL_image -lSDL_ttf -lSDL_mixer -lSDL_gfx -lSDL_net `$SDL_CONFIG --libs` -lfreetype -ljpeg -lpng16 -lwebp -lvorbisfile -lvorbis -logg -lmikmod -lz -lbz2" + export LIBS="-L${NACLPORTS_LIBDIR} ${SDL_LIBS} -lnacl_io -lppapi_cpp -lppapi -lpthread -lstdc++ -lRegal -lm -lc" + autoreconf -i ${SRC_DIR} + ${SRC_DIR}/configure \ + --enable-naclbuild \ + --disable-nls \ + --without-opengl \ + --without-librt \ + --without-mumble \ + --host=nacl \ + --prefix=${PREFIX} +} + +DefaultPackageInstall +exit 0 diff --git a/packaging/nacl/ports/manaplus/pkg_info b/packaging/nacl/ports/manaplus/pkg_info new file mode 100644 index 000000000..4b1f44ec2 --- /dev/null +++ b/packaging/nacl/ports/manaplus/pkg_info @@ -0,0 +1,6 @@ +NAME=manaplus +VERSION=1 +URL=git://gitorious.org/manaplus/manaplus.git +LICENSE=GPL +DEPENDS=(sdl sdl-gfx sdl-mixer sdl-ttf sdl-image sdl-net physfs curl libxml2 libwebp) +SHA1=ed2fe0e228a3d367017839a0cc4c548d526e516f diff --git a/packaging/nacl/ports/openssl/build.sh b/packaging/nacl/ports/openssl/build.sh new file mode 100644 index 000000000..3e0d973de --- /dev/null +++ b/packaging/nacl/ports/openssl/build.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# Copyright (c) 2012 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# The openssl build can fail when build with -jN. +# TODO(sbc): Remove this if/when openssl is upgraded to a version that supports +# parallel make. +OS_JOBS=1 +BUILD_DIR=${SRC_DIR} +INSTALL_TARGETS="install_sw INSTALL_PREFIX=${DESTDIR}" + +ConfigureStep() { + if [ "${NACL_SHARED}" = "1" ] ; then + local EXTRA_ARGS="shared" + else + local EXTRA_ARGS="no-dso" + fi + + if [ "${NACL_LIBC}" = "newlib" ] ; then + EXTRA_ARGS+=" -I${NACLPORTS_INCLUDE}/glibc-compat" + # The default from MACHINE=i686 is linux-elf, which links things + # with -ldl. However, newlib does not have -ldl. In that case, + # make a fake machine where the build rule does not use -ldl. + local machine="le32newlib" + else + local machine="i686" + fi + + MACHINE=${machine} CC=${NACLCC} AR=${NACLAR} RANLIB=${NACLRANLIB} \ + LogExecute ./config \ + --prefix=${PREFIX} no-asm no-hw no-krb5 ${EXTRA_ARGS} -D_GNU_SOURCE + + HackStepForNewlib +} + + +HackStepForNewlib() { + if [ "${NACL_SHARED}" = "1" ]; then + git checkout apps/Makefile + git checkout test/Makefile + return + fi + + # apps/Makefile links programs that require socket(), etc. + # Stub it out until we link against nacl_io or something. + echo "all clean install: " > apps/Makefile + # test/Makefile is similar -- stub out, but keep the original for testing. + git checkout test/Makefile + mv test/Makefile test/Makefile.orig + echo "all clean install: " > test/Makefile +} + + +BuildStep() { + LogExecute make clean + DefaultBuildStep +} + + +InstallStep() { + DefaultInstallStep + # openssl (for some reason) installs shared libraries with 555 (i.e. + # not writable. This causes issues when create_nmf copies the libraries + # and then tries to overwrite them later. + if [ "${NACL_SHARED}" = "1" ] ; then + LogExecute chmod 644 ${DESTDIR_LIB}/libssl.so.* + LogExecute chmod 644 ${DESTDIR_LIB}/libcrypto.so.* + fi +} + + +TestStep() { + return 0 +} diff --git a/packaging/nacl/ports/openssl/nacl.patch b/packaging/nacl/ports/openssl/nacl.patch new file mode 100644 index 000000000..46b257ca4 --- /dev/null +++ b/packaging/nacl/ports/openssl/nacl.patch @@ -0,0 +1,61 @@ +diff -Naur openssl-1.0.1e_old/config openssl-1.0.1e/config +--- openssl-1.0.1e_old/config 2013-02-11 07:26:04.000000000 -0800 ++++ openssl-1.0.1e/config 2013-10-23 13:04:35.247827139 -0700 +@@ -660,6 +660,7 @@ + #fi + OUT="linux64-s390x" + ;; ++ le32newlib-*-linux?) OUT="linux-le32newlib" ;; + x86_64-*-linux?) OUT="linux-x86_64" ;; + *86-*-linux2) OUT="linux-elf" + if [ "$GCCVER" -gt 28 ]; then +diff -Naur openssl-1.0.1e_old/Configure openssl-1.0.1e/Configure +--- openssl-1.0.1e_old/Configure 2013-02-11 07:26:04.000000000 -0800 ++++ openssl-1.0.1e/Configure 2013-10-23 15:18:50.833411949 -0700 +@@ -362,6 +362,11 @@ + "linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", + "linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", + "linux64-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", ++ ++#### NaCl Newlib version (much like linux-elf, which NaCl Glibc uses) ++#### Use linux-aout instead of linux-elf, since it's statically linked. ++"linux-le32newlib", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out", ++ + #### So called "highgprs" target for z/Architecture CPUs + # "Highgprs" is kernel feature first implemented in Linux 2.6.32, see + # /proc/cpuinfo. The idea is to preserve most significant bits of +diff -Naur openssl-1.0.1e_old/crypto/rand/rand_unix.c openssl-1.0.1e/crypto/rand/rand_unix.c +--- openssl-1.0.1e_old/crypto/rand/rand_unix.c 2013-02-11 07:26:04.000000000 -0800 ++++ openssl-1.0.1e/crypto/rand/rand_unix.c 2013-10-23 13:00:36.981427165 -0700 +@@ -133,7 +133,30 @@ + # define FD_SETSIZE (8*sizeof(fd_set)) + #endif + +-#if defined(OPENSSL_SYS_VOS) ++#if defined(__native_client__) ++#include <stdlib.h> ++#include <irt.h> ++/* TODO(sehr): remove this patch when nacl_io can handle /dev/urandom. */ ++int RAND_poll(void) ++{ ++ unsigned char buf[ENTROPY_NEEDED]; ++ size_t n = 0; ++ struct nacl_irt_random rand_intf; ++ if (nacl_interface_query(NACL_IRT_RANDOM_v0_1, &rand_intf, sizeof(rand_intf)) ++ != sizeof(rand_intf)) ++ abort(); ++ while (n < sizeof(buf)) { ++ size_t nread; ++ if (rand_intf.get_random_bytes((unsigned char *)buf+n, ++ ENTROPY_NEEDED-n, &nread) != 0) ++ abort(); ++ n += nread; ++ } ++ RAND_add(buf, sizeof(buf), ENTROPY_NEEDED); ++ memset(buf, 0, sizeof(buf)); ++ return 1; ++} ++#elif defined(OPENSSL_SYS_VOS) + + /* The following algorithm repeatedly samples the real-time clock + (RTC) to generate a sequence of unpredictable data. The algorithm diff --git a/packaging/nacl/ports/openssl/pkg_info b/packaging/nacl/ports/openssl/pkg_info new file mode 100644 index 000000000..b76b8a2ca --- /dev/null +++ b/packaging/nacl/ports/openssl/pkg_info @@ -0,0 +1,7 @@ +NAME=openssl +VERSION=1.0.1g +URL=http://www.openssl.org/source/openssl-1.0.1g.tar.gz +LICENSE=CUSTOM:LICENSE +BUILD_OS=linux +DEPENDS=(glibc-compat) +SHA1=b28b3bcb1dc3ee7b55024c9f795be60eb3183e3c diff --git a/packaging/nacl/ports/regal/build.sh b/packaging/nacl/ports/regal/build.sh new file mode 100644 index 000000000..5ba6bd0bf --- /dev/null +++ b/packaging/nacl/ports/regal/build.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Copyright (c) 2013 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +BUILD_DIR=${SRC_DIR} + +MAKE_ARGS="SYSTEM=nacl-${NACL_ARCH} NACL_LIBC=${NACL_LIBC} -j${OS_JOBS}" + +BuildStep() { + LogExecute make ${MAKE_ARGS} clobber + LogExecute make ${MAKE_ARGS} regal.lib +} + +TestStep() { +# LogExecute make ${MAKE_ARGS} test + return 0 +} + +InstallStep() { + MakeDir ${DESTDIR_LIB} + MakeDir ${DESTDIR_INCLUDE} + LogExecute cp -a lib/nacl-${NACL_ARCH}/libRegal*.a ${DESTDIR_LIB}/ + LogExecute cp -a lib/nacl-${NACL_ARCH}/libglslopt.a ${DESTDIR_LIB}/ + if [ "${NACL_SHARED}" = 1 ]; then + LogExecute cp -a lib/nacl-${NACL_ARCH}/libRegal*.so* ${DESTDIR_LIB}/ + fi + LogExecute cp -r include/GL ${DESTDIR_INCLUDE}/ +} diff --git a/packaging/nacl/ports/regal/nacl.patch b/packaging/nacl/ports/regal/nacl.patch new file mode 100644 index 000000000..be592b3a7 --- /dev/null +++ b/packaging/nacl/ports/regal/nacl.patch @@ -0,0 +1,319 @@ +diff --git a/Makefile b/Makefile +index 911a3c6..e45d3c4 100644 +--- a/Makefile ++++ b/Makefile +@@ -39,6 +39,7 @@ include Makefile.dreamtorus + include Makefile.dreamtorus_static + include Makefile.alphatorus + include Makefile.tiger ++include Makefile.nacl + + # Testing + +diff --git a/Makefile.glu b/Makefile.glu +index 9df0418..3043f07 100644 +--- a/Makefile.glu ++++ b/Makefile.glu +@@ -36,7 +36,6 @@ GLU.OBJS := $(GLU.OBJS:.c=.o) $(GLU.OBJS:.cc=.o) + GLU.OBJS := $(filter %.o,$(GLU.OBJS)) + GLU.DEPS := $(GLU.OBJS:.o=.d) + GLU.LIBS := -Llib/$(SYSTEM) -lRegal +-GLU.LIBS += -lstdc++ + GLU.LIBS += -pthread -lm + + -include $(GLU.DEPS) +diff --git a/Makefile.nacl b/Makefile.nacl +index e5fa8f8..6a6cb90 100644 +--- a/Makefile.nacl ++++ b/Makefile.nacl +@@ -36,8 +36,8 @@ NACL.SRCS.NAMES := $(notdir $(NACL.SRCS)) + NACL.OBJS := $(addprefix tmp/$(SYSTEM)/nacl/static/,$(NACL.SRCS.NAMES)) + NACL.OBJS := $(NACL.OBJS:.c=.o) + NACL.CFLAGS := -Iinclude +-NACL.LIBS += -Llib/$(SYSTEM) -lRegal +-NACL.LIBS += -lpng -lz -lm -pthread -lppapi -lppapi_gles2 -lstdc++ ++NACL.LIBS += -Llib/$(SYSTEM) -lRegal -lglslopt ++NACL.LIBS += -lpng -lz -lm -pthread -lppapi -lppapi_gles2 + + -include $(NACL.DEPS) + +diff --git a/Makefile.regal b/Makefile.regal +index 04a1c88..147a391 100644 +--- a/Makefile.regal ++++ b/Makefile.regal +@@ -18,9 +18,9 @@ include build/regal.inc + export: + python scripts/Export.py --api gl 4.4 --api wgl 4.4 --api glx 4.4 --api cgl 1.4 --api egl 1.0 --outdir . + +-# Shared library target not currently supported for NaCL or emscripten ++# Shared library target not currently supported for emscripten + +-ifneq ($(filter nacl% emscripten%,$(SYSTEM)),) ++ifneq ($(filter emscripten%,$(SYSTEM)),) + REGAL.SHARED := + endif + +@@ -35,7 +35,7 @@ all:: regal.lib + + clean:: regal.clean + +-REGAL.LDFLAGS := -lstdc++ -pthread -lm ++REGAL.LDFLAGS := -pthread -lm + REGAL.LIBS := + + ifeq ($(filter nacl%,$(SYSTEM)),) +@@ -105,7 +105,7 @@ endif + + # Emscripten options + +-ifneq ($(filter nacl% emscripten%,$(SYSTEM)),) ++ifneq ($(filter emscripten%,$(SYSTEM)),) + REGAL.CFLAGS += -DREGAL_SYS_EMSCRIPTEN=1 -DREGAL_SYS_EGL=1 -DREGAL_SYS_ES2=1 + REGAL.CFLAGS += -DREGAL_HTTP=0 + REGAL.CFLAGS += -DREGAL_STATISTICS=0 +@@ -196,12 +196,16 @@ REGAL.SDEPS := $(LIBS.SOBJS:.o=.d) + + REGAL.LIBS += $(LDFLAGS.X11) + +-ifneq ($(filter linux%,$(SYSTEM)),) ++ifneq ($(filter nacl% linux%,$(SYSTEM)),) ++ifeq ($(NACL_LIBC),newlib) ++REGAL.SHARED := ++else + REGAL.SONAME := lib$(NAME).so.$(SO_MAJOR) + REGAL.DEVLNK := lib$(NAME).so + REGAL.SHARED := lib$(NAME).so.$(SO_VERSION) + REGAL.LDFLAGS.SO := $(LDFLAGS.SO) $(LDFLAGS.DYNAMIC) -Wl,-soname=$(REGAL.SONAME) + endif ++endif + + ifneq ($(filter darwin%,$(SYSTEM)),) + REGAL.SONAME := lib$(NAME).$(SO_MAJOR).dylib +@@ -235,12 +239,6 @@ ifdef APITRACE.STATIC + lib/$(SYSTEM)/$(REGAL.STATIC): lib/$(SYSTEM)/$(APITRACE.STATIC) lib/$(SYSTEM)/$(SNAPPY.STATIC) + endif + +-ifneq ($(filter nacl%,$(SYSTEM)),) +-ifeq ($(NACL_LIBC),glibc) +-regal.lib: lib/$(SYSTEM)/$(REGAL.SHARED) +-endif +-endif +- + lib/$(SYSTEM)/$(REGAL.STATIC): lib/$(SYSTEM)/$(GLSLOPT.STATIC) lib/$(SYSTEM)/$(PCRE.STATIC) lib/$(SYSTEM)/$(LIBPNG.STATIC) lib/$(SYSTEM)/$(ZLIB.STATIC) $(REGAL.OBJS) + @mkdir -p $(dir $@) + $(LOG_AR)$(CCACHE) $(AR) cr $@ $(REGAL.OBJS) +diff --git a/Makefile.regaltest b/Makefile.regaltest +index fdebf3a..98a419f 100644 +--- a/Makefile.regaltest ++++ b/Makefile.regaltest +@@ -7,7 +7,7 @@ include build/common.inc + + # Not supported for NaCL - Revisit + +-ifeq ($(filter nacl% emscripten%,$(SYSTEM)),) ++ifeq ($(filter emscripten%,$(SYSTEM)),) + + include build/regaltest.inc + +@@ -75,7 +75,7 @@ test: bin/$(SYSTEM)/regaltest$(BIN_EXTENSION) + ifeq ($(filter nacl%,$(SYSTEM)),) + $^ + else +- "$(NACL_SEL_LDR)" -a -B "$(NACL_IRT)" -- $^ ++ "$(NACL_SDK_ROOT)/tools/sel_ldr.py" $^ + endif + endif + +diff --git a/Makefile.regalw b/Makefile.regalw +index 3577769..012938e 100644 +--- a/Makefile.regalw ++++ b/Makefile.regalw +@@ -18,9 +18,9 @@ REGALW.SHARED ?= libRegal.so + + REGALW.STATIC := + +-# Shared library target not currently supported for NaCL or emscripten ++# Shared library target not currently supported for emscripten + +-ifneq ($(filter nacl% emscripten%,$(SYSTEM)),) ++ifneq ($(filter emscripten%,$(SYSTEM)),) + REGALW.SHARED := + endif + +@@ -31,7 +31,7 @@ all:: regalw.lib + + clean:: regalw.clean + +-REGALW.LDFLAGS := -lstdc++ -pthread -lm ++REGALW.LDFLAGS := -pthread -lm + REGALW.LIBS := + + REGALW.SRCS := $(REGAL.CXX) +diff --git a/README.rst b/README.rst +index a8d5d84..600c336 100644 +--- a/README.rst ++++ b/README.rst +@@ -380,9 +380,7 @@ PPAPI and NaCl + + * NACL_SDK_ROOT needs to be set + +-* NACL_LIBC=newlib is the default, specify NACL_LIBC=glibc as an alternative +- +-* regaltest requires pepper_26 or newer ++* NACL_LIBC=newlib is the default, specify glibc or pnacl as alternatives + + Questions and Answers + ===================== +diff --git a/build/common.inc b/build/common.inc +index 6049b68..5ae16e0 100644 +--- a/build/common.inc ++++ b/build/common.inc +@@ -51,12 +51,12 @@ OPT ?= $(CFLAGS.RELEASE) + endif + + ifndef V +-LOG_CXX ?= @echo " [CXX] $@"; +-LOG_CC ?= @echo " [CC] $@"; +-LOG_LD ?= @echo " [LD] $@"; +-LOG_AR ?= @echo " [AR] $@"; ++LOG_CXX ?= @echo " [CXX] $@"; ++LOG_CC ?= @echo " [CC] $@"; ++LOG_LD ?= @echo " [LD] $@"; ++LOG_AR ?= @echo " [AR] $@"; + LOG_RANLIB ?= @echo " [RANLIB] $@"; +-LOG_STRIP ?= @echo " [STRIP] $@"; ++LOG_STRIP ?= @echo " [STRIP] $@"; + endif + + INCLUDE ?= -Iinclude +diff --git a/build/glu.inc b/build/glu.inc +index 3788977..f4dd54f 100644 +--- a/build/glu.inc ++++ b/build/glu.inc +@@ -102,9 +102,10 @@ GLU.CXX += src/glu/libnurbs/nurbtess/searchTree.cc + GLU.CFLAGS := -Isrc/glu/include -Isrc/glu/libnurbs/interface -Isrc/glu/libnurbs/internals -Isrc/glu/libnurbs/nurbtess + GLU.CFLAGS += -DLIBRARYBUILD + +-GLU.SHARED := libRegalGLU.so +-GLU.STATIC := libRegalGLUlib.a ++GLU.STATIC := libRegalGLU.a + + ifneq ($(filter darwin%,$(SYSTEM)),) + GLU.SHARED := libRegalGLU.dylib ++else ++GLU.SHARED := libRegalGLU.so + endif +diff --git a/build/pcre.inc b/build/pcre.inc +index d253c38..7a941c6 100644 +--- a/build/pcre.inc ++++ b/build/pcre.inc +@@ -65,7 +65,7 @@ PCRE.C += src/pcre/pcre_get.c + PCRE.C += src/pcre/pcre_globals.c + #PCRE.C += src/pcre/pcregrep.c + PCRE.C += src/pcre/pcre_jit_compile.c +-PCRE.C += src/pcre/pcre_jit_test.c ++#PCRE.C += src/pcre/pcre_jit_test.c + PCRE.C += src/pcre/pcre_maketables.c + PCRE.C += src/pcre/pcre_newline.c + PCRE.C += src/pcre/pcre_ord2utf8.c +diff --git a/build/regal.inc b/build/regal.inc +index 32e7933..71ec2a6 100644 +--- a/build/regal.inc ++++ b/build/regal.inc +@@ -153,5 +153,5 @@ ifeq ($(PROFILE_OS),Windows) + REGAL.INCLUDE += -Isrc/glsl/include/c99 + endif + +-REGAL.STATIC ?= libRegallib.a ++REGAL.STATIC ?= libRegal.a + REGAL.SHARED ?= libRegal.so +diff --git a/config/Makefile.nacl-pnacl b/config/Makefile.nacl-pnacl +index a0ee95c..9bfbe1d 100644 +--- a/config/Makefile.nacl-pnacl ++++ b/config/Makefile.nacl-pnacl +@@ -2,7 +2,7 @@ NACL_ARCH := pnacl + + include config/nacl.inc + +-NACL_TOOLCHAIN := $(NACL_SDK_ROOT)/toolchain/$(NACL_OS)_x86_pnacl/$(NACL_LIBC) ++NACL_TOOLCHAIN := $(NACL_SDK_ROOT)/toolchain/$(NACL_OS)_pnacl + + CC := $(NACL_TOOLCHAIN)/bin/pnacl-clang + CXX := $(NACL_TOOLCHAIN)/bin/pnacl-clang++ +@@ -13,7 +13,6 @@ STRIP ?= + + BIN_EXTENSION = .pexe + EXT.DYNAMIC = so +-LDFLAGS.EXTRA = + LIBDIR = + CFLAGS.EXTRA += + LDFLAGS.EXTRA += +diff --git a/config/nacl.inc b/config/nacl.inc +index d86d4e7..66a9b05 100644 +--- a/config/nacl.inc ++++ b/config/nacl.inc +@@ -48,8 +48,12 @@ export CCACHE_COMPILERCHECK=echo $(SYSTEM)$(NACL_LIBC)$(NACL_SDK_ROOT) + ifeq ($(NACL_ARCH),i686) + NACL_LIBTYPE=$(NACL_LIBC)_x86_32 + else ++ifeq ($(NACL_ARCH),pnacl) ++NACL_LIBTYPE=$(NACL_ARCH) ++else + NACL_LIBTYPE=$(NACL_LIBC)_$(NACL_ARCH) + endif ++endif + + ifeq ($(MODE),debug) + LDFLAGS.EXTRA += -L$(NACL_SDK_ROOT)/ports/lib/$(NACL_LIBTYPE)/Debug +diff --git a/src/apitrace/common/os_posix.cpp b/src/apitrace/common/os_posix.cpp +index 28abb97..b49fd40 100644 +--- a/src/apitrace/common/os_posix.cpp ++++ b/src/apitrace/common/os_posix.cpp +@@ -123,7 +123,7 @@ getCurrentDir(void) + size_t size = PATH_MAX; + char *buf = path.buf(size); + +- getcwd(buf, size); ++ buf = getcwd(buf, size); + buf[size - 1] = 0; + + path.truncate(); +diff --git a/src/boost/boost/print/detail.hpp b/src/boost/boost/print/detail.hpp +index 9cb3643..49aa043 100644 +--- a/src/boost/boost/print/detail.hpp ++++ b/src/boost/boost/print/detail.hpp +@@ -325,7 +325,7 @@ inline size_t unsigned_length(const unsigned long val) { return unsigned_length( + inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); } + #endif + +-#if defined(__native_client__) && (defined(__i386) || defined(__x86_64) || defined(__arm__)) ++#if defined(__native_client__) + inline size_t unsigned_length(const unsigned long val) { return unsigned_length(static_cast<boost::uint32_t>(val)); } + #endif + +diff --git a/src/regal/RegalShader.cpp b/src/regal/RegalShader.cpp +index d59249f..65cceeb 100644 +--- a/src/regal/RegalShader.cpp ++++ b/src/regal/RegalShader.cpp +@@ -233,7 +233,7 @@ namespace Shader { + bool status; + }; + +- static inline void debug_print_ir (const char* name, exec_list* ir, _mesa_glsl_parse_state* state, void* memctx) ++ static inline void REGAL_UNUSED debug_print_ir (const char* name, exec_list* ir, _mesa_glsl_parse_state* state, void* memctx) + { + //_mesa_print_ir (ir, state); + Error( "GLSLOptimize debug **** ", name, ":", +diff --git a/src/regal/RegalUtil.h b/src/regal/RegalUtil.h +index 4bf9e75..0df4078 100644 +--- a/src/regal/RegalUtil.h ++++ b/src/regal/RegalUtil.h +@@ -56,7 +56,7 @@ + #endif + + #ifndef REGAL_UNUSED +-#if defined(__GNUC__) && !defined(__clang__) ++#if defined(__GNUC__) + #define REGAL_UNUSED __attribute__((unused)) + #else + #define REGAL_UNUSED diff --git a/packaging/nacl/ports/regal/pkg_info b/packaging/nacl/ports/regal/pkg_info new file mode 100644 index 000000000..a76111b2f --- /dev/null +++ b/packaging/nacl/ports/regal/pkg_info @@ -0,0 +1,8 @@ +NAME=regal +VERSION=f106e4cd +URL=https://github.com/p3/regal/archive/f106e4cd/Regal-f106e4cd.tar.gz +ARCHIVE_ROOT=regal-f106e4cd0e780b0995a26498365dceb0ed025832 +DEPENDS=(libpng) +DISABLED_ARCH=(pnacl) +DISABLED_LIBC=(bionic) +SHA1=6e8cd18c44a83e7eb17d123b5e0ec8cdceff9ea2 diff --git a/packaging/nacl/ports/sdl-gfx/build.sh b/packaging/nacl/ports/sdl-gfx/build.sh new file mode 100755 index 000000000..e1572c9a1 --- /dev/null +++ b/packaging/nacl/ports/sdl-gfx/build.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Copyright (c) 2011 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +#source pkg_info +#source ../../build_tools/common.sh + +ConfigureStep() { + Banner "Configuring ${PACKAGE_NAME}" + + export SDL_CONFIG=${NACLPORTS_LIBDIR}/../bin/sdl-config + SDL_CFLAGS=`$SDL_CONFIG --cflags` + SDL_LIBS=`$SDL_CONFIG --libs` + + # export the nacl tools + export CC=${NACLCC} + export CXX=${NACLCXX} + export AR=${NACLAR} + export RANLIB=${NACLRANLIB} + export PKG_CONFIG_PATH=${NACLPORTS_LIBDIR}/pkgconfig + export PKG_CONFIG_LIBDIR=${NACLPORTS_LIBDIR} + export CFLAGS="${NACLPORTS_CFLAGS} $SDL_CFLAGS" + export CXXFLAGS="${NACLPORTS_CXXFLAGS} $SDL_CFLAGS" + export LDFLAGS=${NACLPORTS_LDFLAGS} + export PATH=${NACL_BIN_PATH}:${PATH}; + export LIBS="-L${NACLPORTS_LIBDIR} -lppapi -lppapi_gles2 -lppapi_cpp -lnacl_io -lpthread -lstdc++ -lm -lnosys $SDL_LIBS" + ${SRC_DIR}/autogen.sh + ${SRC_DIR}/configure \ + --enable-mmx=no \ + --host=nacl \ + --prefix=${PREFIX} +} + +PackageInstall +exit 0 diff --git a/packaging/nacl/ports/sdl-gfx/nacl.patch b/packaging/nacl/ports/sdl-gfx/nacl.patch new file mode 100644 index 000000000..e01d8e85c --- /dev/null +++ b/packaging/nacl/ports/sdl-gfx/nacl.patch @@ -0,0 +1,14 @@ +--- SDL_gfx-2.0.24/configure.in 2012-08-05 20:25:55.000000000 +0400 ++++ SDL_gfx-2.0.24-nacl/configure.in 2013-10-29 22:58:03.825301123 +0400 +@@ -117,10 +117,7 @@ + fi + + dnl Check for SDL +-AM_PATH_SDL($SDL_VERSION, +- :, +- AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) +-) ++ + CFLAGS="$CFLAGS $SDL_CFLAGS" + # Remove dependencies from 'sdl-config' not meant for us libraries: + SDL_LIBS=$(echo "$SDL_LIBS" | sed -e 's/-lmingw32//' -e 's/-lSDLmain//') diff --git a/packaging/nacl/ports/sdl-gfx/pkg_info b/packaging/nacl/ports/sdl-gfx/pkg_info new file mode 100644 index 000000000..a32b0f393 --- /dev/null +++ b/packaging/nacl/ports/sdl-gfx/pkg_info @@ -0,0 +1,7 @@ +NAME=sdl-gfx +VERSION=2.0.24 +ARCHIVE_ROOT=SDL_gfx-2.0.24 +URL=http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.24.tar.gz +LICENSE=LGPL2 +DEPENDS=(sdl) +SHA1=34e8963188e4845557468a496066a8fa60d5f563 diff --git a/packaging/nacl/ports/sdl-net/nacl.patch b/packaging/nacl/ports/sdl-net/nacl.patch new file mode 100644 index 000000000..8d7fd7e52 --- /dev/null +++ b/packaging/nacl/ports/sdl-net/nacl.patch @@ -0,0 +1,251 @@ +diff -urN SDL_net-1.2.7/SDL_net.h SDL_net-1.2.7-nacl/SDL_net.h +--- SDL_net-1.2.7/SDL_net.h 2007-07-15 09:59:03.000000000 +0400 ++++ SDL_net-1.2.7-nacl/SDL_net.h 2013-11-03 00:01:10.871933000 +0400 +@@ -30,7 +30,7 @@ + #include "SDL_version.h" + #include "begin_code.h" + +- ++#define u_int32_t uint32_t + + /* Set up for C function definitions, even when using C++ */ + #ifdef __cplusplus + +diff -urN /dev/null SDL_net-1.2.7-nacl/inet_addr.c +--- /dev/null 2013-11-02 22:47:51.150226312 +0400 ++++ SDL_net-1.2.7-nacl/inet_addr.c 2013-11-02 23:59:09.523930000 +0400 +@@ -0,0 +1,201 @@ ++/* $KAME: inet_addr.c,v 1.5 2001/08/20 02:32:40 itojun Exp $ */ ++ ++/* ++ * ++Copyright++ 1983, 1990, 1993 ++ * - ++ * Copyright (c) 1983, 1990, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * This product includes software developed by the University of ++ * California, Berkeley and its contributors. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * - ++ * Portions Copyright (c) 1993 by Digital Equipment Corporation. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies, and that ++ * the name of Digital Equipment Corporation not be used in advertising or ++ * publicity pertaining to distribution of the document or software without ++ * specific, written prior permission. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL ++ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT ++ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL ++ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR ++ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ++ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ++ * SOFTWARE. ++ * - ++ * --Copyright-- ++ */ ++ ++#if defined(LIBC_SCCS) && !defined(lint) ++static char sccsid[] = "@(#)inet_addr.c 8.1 (Berkeley) 6/17/93"; ++#endif /* LIBC_SCCS and not lint */ ++#include <sys/cdefs.h> ++#include <sys/types.h> ++#include <machine/endian.h> ++ ++#include <sys/param.h> ++ ++#include <netinet/in.h> ++#include <arpa/inet.h> ++ ++#include <ctype.h> ++#include <errno.h> ++#include <string.h> ++#include <stdlib.h> ++ ++/* ++ * ASCII internet address interpretation routine. ++ * The value returned is in network order. ++ */ ++in_addr_t /* XXX should be struct in_addr :( */ ++inet_addr(cp) ++ const char *cp; ++{ ++ struct in_addr val; ++ ++ if (inet_aton(cp, &val)) ++ return (val.s_addr); ++ return (INADDR_NONE); ++} ++ ++/* ++ * Check whether "cp" is a valid ASCII representation ++ * of an Internet address and convert to a binary address. ++ * Returns 1 if the address is valid, 0 if not. ++ * This replaces inet_addr, the return value from which ++ * cannot distinguish between failure and a local broadcast address. ++ */ ++int ++inet_aton(cp, addr) ++ const char *cp; ++ struct in_addr *addr; ++{ ++ u_long parts[4]; ++ in_addr_t val; ++ char *c; ++ char *endptr; ++ int gotend, n; ++ ++ c = (char *)cp; ++ n = 0; ++ /* ++ * Run through the string, grabbing numbers until ++ * the end of the string, or some error ++ */ ++ gotend = 0; ++ while (!gotend) { ++ errno = 0; ++ val = strtoul(c, &endptr, 0); ++ ++ if (errno == ERANGE) /* Fail completely if it overflowed. */ ++ return (0); ++ ++ /* ++ * If the whole string is invalid, endptr will equal ++ * c.. this way we can make sure someone hasn't ++ * gone '.12' or something which would get past ++ * the next check. ++ */ ++ if (endptr == c) ++ return (0); ++ parts[n] = val; ++ c = endptr; ++ ++ /* Check the next character past the previous number's end */ ++ switch (*c) { ++ case '.' : ++ /* Make sure we only do 3 dots .. */ ++ if (n == 3) /* Whoops. Quit. */ ++ return (0); ++ n++; ++ c++; ++ break; ++ ++ case '\0': ++ gotend = 1; ++ break; ++ ++ default: ++ if (isspace((unsigned char)*c)) { ++ gotend = 1; ++ break; ++ } else ++ return (0); /* Invalid character, so fail */ ++ } ++ ++ } ++ ++ /* ++ * Concoct the address according to ++ * the number of parts specified. ++ */ ++ ++ switch (n) { ++ case 0: /* a -- 32 bits */ ++ /* ++ * Nothing is necessary here. Overflow checking was ++ * already done in strtoul(). ++ */ ++ break; ++ case 1: /* a.b -- 8.24 bits */ ++ if (val > 0xffffff || parts[0] > 0xff) ++ return (0); ++ val |= parts[0] << 24; ++ break; ++ ++ case 2: /* a.b.c -- 8.8.16 bits */ ++ if (val > 0xffff || parts[0] > 0xff || parts[1] > 0xff) ++ return (0); ++ val |= (parts[0] << 24) | (parts[1] << 16); ++ break; ++ ++ case 3: /* a.b.c.d -- 8.8.8.8 bits */ ++ if (val > 0xff || parts[0] > 0xff || parts[1] > 0xff || ++ parts[2] > 0xff) ++ return (0); ++ val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); ++ break; ++ } ++ ++ if (addr != NULL) ++ addr->s_addr = htonl(val); ++ return (1); ++} ++ ++/* ++ * Weak aliases for applications that use certain private entry points, ++ * and fail to include <arpa/inet.h>. ++ */ ++#undef inet_addr ++__weak_reference(__inet_addr, inet_addr); ++#undef inet_aton ++__weak_reference(__inet_aton, inet_aton); + +diff -urN SDL_net-1.2.7/SDLnet.c SDL_net-1.2.7-nacl/SDLnet.c +--- SDL_net-1.2.7/SDLnet.c 2007-07-02 06:04:03.000000000 +0400 ++++ SDL_net-1.2.7-nacl/SDLnet.c 2013-11-03 00:43:36.859998000 +0400 +@@ -29,6 +29,8 @@ + #include "SDLnetsys.h" + #include "SDL_net.h" + ++#include "inet_addr.c" ++ + + const SDL_version *SDLNet_Linked_Version(void) + { +@@ -344,7 +346,7 @@ + + hp = gethostbyname(host); + if ( hp ) { +- memcpy(&address->host,hp->h_addr,hp->h_length); ++ memcpy(&address->host,hp->h_addr_list[0],hp->h_length); + } else { + retval = -1; + } +@@ -368,8 +370,7 @@ + const char *SDLNet_ResolveIP(IPaddress *ip) + { + struct hostent *hp; +- +- hp = gethostbyaddr((char *)&ip->host, 4, AF_INET); ++ hp = NULL; + if ( hp != NULL ) { + return hp->h_name; + } + diff --git a/packaging/nacl/ports/sdl-net/pkg_info b/packaging/nacl/ports/sdl-net/pkg_info new file mode 100644 index 000000000..2c64c8642 --- /dev/null +++ b/packaging/nacl/ports/sdl-net/pkg_info @@ -0,0 +1,9 @@ +NAME=sdl-net +VERSION=1.2.7 +ARCHIVE_ROOT=SDL_net-1.2.7 +URL=http://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.7.tar.gz +LICENSE=LGPL2 +DEPENDS=(sdl) +# Disabled for bionic due to sdl. +DISABLED_LIBC=(bionic) +SHA1=b46c7e3221621cc34fec1238f1b5f0ce8972274d diff --git a/packaging/nacl/ports/sdl/build.sh b/packaging/nacl/ports/sdl/build.sh new file mode 100644 index 000000000..036ec8ee6 --- /dev/null +++ b/packaging/nacl/ports/sdl/build.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Copyright (c) 2011 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +CONFIG_SUB=build-scripts/config.sub + +AutogenStep() { + ChangeDir ${SRC_DIR} + # For some reason if we don't remove configure before running + # autoconf it doesn't always get updates correctly. About half + # the time the old configure script (with no reference to nacl) + # will remain after ./autogen.sh + rm -f configure + ./autogen.sh + PatchConfigure + PatchConfigSub + cd - +} + + +ConfigureStep() { + AutogenStep + SetupCrossEnvironment + + local conf_host=${NACL_CROSS_PREFIX} + if [ ${NACL_ARCH} = "pnacl" ]; then + # The PNaCl tools use "pnacl-" as the prefix, but config.sub + # does not know about "pnacl". It only knows about "le32-nacl". + # Unfortunately, most of the config.subs here are so old that + # it doesn't know about that "le32" either. So we just say "nacl". + conf_host="nacl-pnacl" + fi + + LogExecute ${SRC_DIR}/configure \ + --host=${conf_host} \ + --prefix=${PREFIX} \ + --disable-assembly \ + --disable-pthread-sem +} diff --git a/packaging/nacl/ports/sdl/nacl.patch b/packaging/nacl/ports/sdl/nacl.patch new file mode 100644 index 000000000..ddbb24d30 --- /dev/null +++ b/packaging/nacl/ports/sdl/nacl.patch @@ -0,0 +1,6362 @@ +diff --git a/Makefile.in b/Makefile.in +index e29dc6d..bb485dd 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -36,13 +36,13 @@ TARGET = libSDL.la + SOURCES = @SOURCES@ + OBJECTS = @OBJECTS@ + +-SDLMAIN_TARGET = libSDLmain.a ++SDLMAIN_TARGET = libSDLmain.la + SDLMAIN_SOURCES = @SDLMAIN_SOURCES@ + SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@ + + DIST = acinclude autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS CWprojects.sea.bin docs docs.html include INSTALL Makefile.dc Makefile.minimal Makefile.in MPWmake.sea.bin README* sdl-config.in sdl.m4 sdl.pc.in SDL.qpg.in SDL.spec SDL.spec.in src test TODO VisualCE.zip VisualC.html VisualC.zip Watcom-OS2.zip Watcom-Win32.zip symbian.zip WhatsNew Xcode.tar.gz + +-HDRS = SDL.h SDL_active.h SDL_audio.h SDL_byteorder.h SDL_cdrom.h SDL_cpuinfo.h SDL_endian.h SDL_error.h SDL_events.h SDL_getenv.h SDL_joystick.h SDL_keyboard.h SDL_keysym.h SDL_loadso.h SDL_main.h SDL_mouse.h SDL_mutex.h SDL_name.h SDL_opengl.h SDL_platform.h SDL_quit.h SDL_rwops.h SDL_stdinc.h SDL_syswm.h SDL_thread.h SDL_timer.h SDL_types.h SDL_version.h SDL_video.h begin_code.h close_code.h ++HDRS = SDL.h SDL_active.h SDL_audio.h SDL_byteorder.h SDL_cdrom.h SDL_cpuinfo.h SDL_endian.h SDL_error.h SDL_events.h SDL_getenv.h SDL_joystick.h SDL_keyboard.h SDL_keysym.h SDL_loadso.h SDL_main.h SDL_mouse.h SDL_mutex.h SDL_name.h SDL_nacl.h SDL_opengl.h SDL_platform.h SDL_quit.h SDL_rwops.h SDL_stdinc.h SDL_syswm.h SDL_thread.h SDL_timer.h SDL_types.h SDL_version.h SDL_video.h begin_code.h close_code.h + + LT_AGE = @LT_AGE@ + LT_CURRENT = @LT_CURRENT@ +@@ -68,9 +68,9 @@ depend: + @SOURCES="$(SOURCES)" INCLUDE="$(INCLUDE)" output="$(depend)" \ + $(SHELL) $(auxdir)/makedep.sh + @for src in $(SDLMAIN_SOURCES); do \ +- obj=`echo $$src | sed -e 's|.*/||' -e 's|\.[^\.]*$$|.o|'`; \ ++ obj=`echo $$src | sed -e 's|.*/||' -e 's|\.[^\.]*$$|.lo|'`; \ + echo "\$$(objects)/$$obj: $$src" >>$(depend); \ +- echo " \$$(CC) \$$(CFLAGS) \$$(EXTRA_CFLAGS) -c $$src -o \$$@" >>$(depend); \ ++ echo " \$$(LIBTOOL) --mode=compile \$$(CC) \$$(CFLAGS) \$$(EXTRA_CFLAGS) -c $$src -o \$$@" >>$(depend); \ + done + + include $(depend) +@@ -79,8 +79,7 @@ $(objects)/$(TARGET): $(OBJECTS) + $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS) +- $(AR) cru $@ $(SDLMAIN_OBJECTS) +- $(RANLIB) $@ ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(SDLMAIN_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + install: all install-bin install-hdrs install-lib install-data install-man + install-bin: +@@ -95,8 +94,7 @@ install-hdrs: + install-lib: $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) + $(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(libdir) + $(LIBTOOL) --mode=install $(INSTALL) $(objects)/$(TARGET) $(DESTDIR)$(libdir)/$(TARGET) +- $(INSTALL) -m 644 $(objects)/$(SDLMAIN_TARGET) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET) +- $(RANLIB) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET) ++ $(LIBTOOL) --mode=install $(INSTALL) $(objects)/$(SDLMAIN_TARGET) $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET) + install-data: + $(SHELL) $(auxdir)/mkinstalldirs $(DESTDIR)$(datadir)/aclocal + $(INSTALL) -m 644 $(srcdir)/sdl.m4 $(DESTDIR)$(datadir)/aclocal/sdl.m4 +@@ -120,7 +118,7 @@ uninstall-hdrs: + -rmdir $(DESTDIR)$(includedir)/SDL + uninstall-lib: + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(TARGET) +- rm -f $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET) ++ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(SDLMAIN_TARGET) + uninstall-data: + rm -f $(DESTDIR)$(datadir)/aclocal/sdl.m4 + rm -f $(DESTDIR)$(libdir)/pkgconfig/sdl.pc +diff --git a/configure.in b/configure.in +index a7e9b18..ea62977 100644 +--- a/configure.in ++++ b/configure.in +@@ -181,7 +181,8 @@ if test x$enable_libc = xyes; then + AC_DEFINE(HAVE_MPROTECT) + ]), + ) +- AC_CHECK_FUNCS(malloc calloc realloc free getenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf iconv sigaction setjmp nanosleep) ++ # TODO(bradnelson): Add back in iconv once it builds on pnacl mac. ++ AC_CHECK_FUNCS(malloc calloc realloc free getenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf sigaction setjmp nanosleep) + + AC_CHECK_LIB(iconv, libiconv_open, [EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"]) + AC_CHECK_LIB(m, pow, [EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"]) +@@ -885,6 +886,50 @@ CheckVisibilityHidden() + fi + } + ++dnl Check for Native Client stuff ++CheckNativeClient() ++{ ++ AC_ARG_ENABLE(naclvideo, ++AC_HELP_STRING([--enable-naclvideo], [enable the nacl video driver [[default=yes]]]), ++ , enable_naclvideo=yes) ++ if test x$enable_video = xyes -a x$enable_naclvideo = xyes; then ++ AC_DEFINE(SDL_VIDEO_DRIVER_NACL) ++ SOURCES="$SOURCES $srcdir/src/video/nacl/*.cc" ++ EXTRA_LDFLAGS="-lnacl_io -l${NACL_CPP_LIB:-stdc++} $EXTRA_LDFLAGS" ++ SDL_LIBS="$SDL_LIBS -lppapi -lSDLmain -ltar" ++ fi ++ ++ AC_ARG_ENABLE(naclaudio, ++AC_HELP_STRING([--enable-naclaudio], [enable the nacl audio driver [[default=yes]]]), ++ , enable_naclaudio=yes) ++ if test x$enable_audio = xyes -a x$enable_naclaudio = xyes; then ++ AC_DEFINE(SDL_AUDIO_DRIVER_NACL) ++ SOURCES="$SOURCES $srcdir/src/audio/nacl/*.cc" ++ fi ++} ++ ++dnl Find Regal OpenGL library ++CheckOpenGLRegal() ++{ ++ if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then ++ AC_MSG_CHECKING(for OpenGL (Regal) support) ++ video_opengl=no ++ AC_TRY_COMPILE([ ++ #include <GL/Regal.h> ++ ],[ ++ ],[ ++ video_opengl=yes ++ ]) ++ AC_MSG_RESULT($video_opengl) ++ if test x$video_opengl = xyes; then ++ AC_DEFINE(SDL_VIDEO_OPENGL) ++ AC_DEFINE(SDL_VIDEO_OPENGL_REGAL) ++ EXTRA_LDFLAGS="-lRegal -lglslopt -lppapi_gles2 ${EXTRA_LDFLAGS}" ++ SDL_LIBS="-lRegal -lglslopt -lppapi_gles2 ${SDL_LIBS}" ++ fi ++ fi ++} ++ + + dnl Do the iPod thing + CheckIPod() +@@ -2284,6 +2329,22 @@ case "$host" in + have_timers=yes + fi + ;; ++ *-nacl) ++ ARCH=nacl ++ CheckNativeClient ++ CheckOpenGLRegal ++ CheckDummyAudio ++ CheckDummyVideo ++ CheckInputEvents ++ # Set up files for the timer library ++ if test x$enable_timers = xyes; then ++ AC_DEFINE(SDL_TIMER_UNIX) ++ SOURCES="$SOURCES $srcdir/src/timer/unix/*.c" ++ have_timers=yes ++ fi ++ CheckPTHREAD ++ SDLMAIN_SOURCES="$srcdir/src/main/nacl/*.c" ++ ;; + *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-irix*|*-*-aix*|*-*-osf*) + case "$host" in + *-*-linux*) ARCH=linux ;; +@@ -2838,9 +2899,9 @@ OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'` + OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.S,$(objects)/\1.lo,g'` + OBJECTS=`echo $OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.rc,$(objects)/\1.o,g'` + +-SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES | sed 's,[[^ ]]*/\([[^ ]]*\)\.cc,$(objects)/\1.o,g'` +-SDLMAIN_OBJECTS=`echo $SDLMAIN_OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.m,$(objects)/\1.o,g'` +-SDLMAIN_OBJECTS=`echo $SDLMAIN_OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.o,g'` ++SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES | sed 's,[[^ ]]*/\([[^ ]]*\)\.cc,$(objects)/\1.lo,g'` ++SDLMAIN_OBJECTS=`echo $SDLMAIN_OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.m,$(objects)/\1.lo,g'` ++SDLMAIN_OBJECTS=`echo $SDLMAIN_OBJECTS | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'` + + # Set runtime shared library paths as needed + +@@ -2866,6 +2927,9 @@ case "$ARCH" in + # Evil hack to allow static linking on Mac OS X + SDL_STATIC_LIBS="\${libdir}/libSDLmain.a \${libdir}/libSDL.a $EXTRA_LDFLAGS" + ;; ++ nacl) ++ SDL_STATIC_LIBS="-Wl,--start-group -lSDLmain $SDL_LIBS $EXTRA_LDFLAGS -lSDLmain -ltar -Wl,--end-group" ++ ;; + *) + SDL_STATIC_LIBS="$SDL_LIBS $EXTRA_LDFLAGS" + ;; +diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in +index 58593ca..150097d 100644 +--- a/include/SDL_config.h.in ++++ b/include/SDL_config.h.in +@@ -174,6 +174,7 @@ + #undef SDL_AUDIO_DRIVER_ESD_DYNAMIC + #undef SDL_AUDIO_DRIVER_MINT + #undef SDL_AUDIO_DRIVER_MMEAUDIO ++#undef SDL_AUDIO_DRIVER_NACL + #undef SDL_AUDIO_DRIVER_NAS + #undef SDL_AUDIO_DRIVER_NAS_DYNAMIC + #undef SDL_AUDIO_DRIVER_OSS +@@ -265,6 +266,7 @@ + #undef SDL_VIDEO_DRIVER_GEM + #undef SDL_VIDEO_DRIVER_GGI + #undef SDL_VIDEO_DRIVER_IPOD ++#undef SDL_VIDEO_DRIVER_NACL + #undef SDL_VIDEO_DRIVER_NANOX + #undef SDL_VIDEO_DRIVER_OS2FS + #undef SDL_VIDEO_DRIVER_PHOTON +@@ -295,6 +297,7 @@ + /* Enable OpenGL support */ + #undef SDL_VIDEO_OPENGL + #undef SDL_VIDEO_OPENGL_GLX ++#undef SDL_VIDEO_OPENGL_REGAL + #undef SDL_VIDEO_OPENGL_WGL + #undef SDL_VIDEO_OPENGL_OSMESA + #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC +diff --git a/include/SDL_main.h b/include/SDL_main.h +index b7f6b2c..cdde128 100644 +--- a/include/SDL_main.h ++++ b/include/SDL_main.h +@@ -32,7 +32,7 @@ + #if defined(__WIN32__) || \ + (defined(__MWERKS__) && !defined(__BEOS__)) || \ + defined(__MACOS__) || defined(__MACOSX__) || \ +- defined(__SYMBIAN32__) || defined(QWS) ++ defined(__SYMBIAN32__) || defined(QWS) || defined(__native_client__) + + #ifdef __cplusplus + #define C_LINKAGE "C" +diff --git a/include/SDL_nacl.h b/include/SDL_nacl.h +new file mode 100644 +index 0000000..7bb5683 +--- /dev/null ++++ b/include/SDL_nacl.h +@@ -0,0 +1,26 @@ ++#ifndef _SDL_nacl_h ++#define _SDL_nacl_h ++ ++#include "begin_code.h" ++#include <ppapi/c/pp_instance.h> ++#include <ppapi/c/pp_resource.h> ++#include <ppapi/c/ppb.h> ++ ++/* Set up for C function definitions, even when using C++ */ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++void SDL_NACL_SetInstance(PP_Instance instance, PPB_GetInterface get_interface, ++ int width, int height); ++void SDL_NACL_PushEvent(PP_Resource input_event); ++void SDL_NACL_SetHasFocus(int has_focus); ++void SDL_NACL_SetPageVisible(int is_visible); ++ ++/* Ends C function definitions when using C++ */ ++#ifdef __cplusplus ++} ++#endif ++#include "close_code.h" ++ ++#endif /* _SDL_nacl_h */ +diff --git a/include/SDL_opengl.h b/include/SDL_opengl.h +index c479a3a..a0f4962 100644 +--- a/include/SDL_opengl.h ++++ b/include/SDL_opengl.h +@@ -33,7 +33,7 @@ + #endif + #include <windows.h> + #endif +-#ifndef NO_SDL_GLEXT ++#if !defined(NO_SDL_GLEXT) && !defined(__native_client__) + #define __glext_h_ /* Don't let gl.h include glext.h */ + #endif + #if defined(__MACOSX__) +@@ -42,6 +42,10 @@ + #elif defined(__MACOS__) + #include <gl.h> /* Header File For The OpenGL Library */ + #include <glu.h> /* Header File For The GLU Library */ ++#elif defined(__native_client__) ++#include <GL/Regal.h> ++#define APIENTRY ++#define APIENTRYP APIENTRY * + #else + #include <GL/gl.h> /* Header File For The OpenGL Library */ + #include <GL/glu.h> /* Header File For The GLU Library */ +diff --git a/include/SDL_platform.h b/include/SDL_platform.h +index 11d8673..dd99403 100644 +--- a/include/SDL_platform.h ++++ b/include/SDL_platform.h +@@ -63,10 +63,14 @@ + #undef __IRIX__ + #define __IRIX__ 1 + #endif +-#if defined(linux) || defined(__linux) || defined(__linux__) ++#if defined(linux) || defined(__linux) || defined(__linux__) && !defined(__native_client__) + #undef __LINUX__ + #define __LINUX__ 1 + #endif ++#if defined(__native_client__) ++#undef __NACL__ ++#define __NACL__ 1 ++#endif + #if defined(__APPLE__) + #undef __MACOSX__ + #define __MACOSX__ 1 +diff --git a/src/SDL_fatal.c b/src/SDL_fatal.c +index 15c0be7..82ceeef 100644 +--- a/src/SDL_fatal.c ++++ b/src/SDL_fatal.c +@@ -39,7 +39,11 @@ static void SDL_Parachute(int sig) + { + signal(sig, SIG_DFL); + SDL_Quit(); ++#ifdef __native_client__ ++ exit(sig); ++#else + raise(sig); ++#endif + } + + static int SDL_fatal_signals[] = { +diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c +index bdeacdc..ac43356 100644 +--- a/src/audio/SDL_audio.c ++++ b/src/audio/SDL_audio.c +@@ -36,6 +36,9 @@ + + /* Available audio drivers */ + static AudioBootStrap *bootstrap[] = { ++#if SDL_AUDIO_DRIVER_NACL ++ &NACLAUD_bootstrap, ++#endif + #if SDL_AUDIO_DRIVER_BSD + &BSD_AUDIO_bootstrap, + #endif +diff --git a/src/audio/SDL_sysaudio.h b/src/audio/SDL_sysaudio.h +index 50cf179..7b9a0a7 100644 +--- a/src/audio/SDL_sysaudio.h ++++ b/src/audio/SDL_sysaudio.h +@@ -156,6 +156,9 @@ extern AudioBootStrap MINTAUDIO_STFA_bootstrap; + extern AudioBootStrap MINTAUDIO_XBIOS_bootstrap; + extern AudioBootStrap MINTAUDIO_DMA8_bootstrap; + #endif ++#if SDL_AUDIO_DRIVER_NACL ++extern AudioBootStrap NACLAUD_bootstrap; ++#endif + #if SDL_AUDIO_DRIVER_DISK + extern AudioBootStrap DISKAUD_bootstrap; + #endif +diff --git a/src/audio/nacl/SDL_naclaudio.cc b/src/audio/nacl/SDL_naclaudio.cc +new file mode 100644 +index 0000000..7a02156 +--- /dev/null ++++ b/src/audio/nacl/SDL_naclaudio.cc +@@ -0,0 +1,140 @@ ++#include "SDL_config.h" ++#include "SDL_naclaudio.h" ++ ++#include <assert.h> ++ ++#include <ppapi/c/pp_instance.h> ++#include <ppapi/c/ppb.h> ++#include <ppapi/c/ppb_audio.h> ++#include <ppapi/c/ppb_audio_config.h> ++#include <ppapi/c/ppb_core.h> ++ ++extern PP_Instance g_nacl_pp_instance; ++extern PPB_GetInterface g_nacl_get_interface; ++extern const PPB_Core_1_0* g_nacl_core_interface; ++ ++const PPB_Audio_1_1* g_nacl_audio_interface; ++const PPB_AudioConfig_1_1* g_nacl_audio_config_interface; ++ ++extern "C" { ++ ++#include "SDL_rwops.h" ++#include "SDL_timer.h" ++#include "SDL_audio.h" ++#include "SDL_mutex.h" ++#include "../SDL_audiomem.h" ++#include "../SDL_audio_c.h" ++#include "../SDL_audiodev_c.h" ++ ++/* The tag name used by NACL audio */ ++#define NACLAUD_DRIVER_NAME "nacl" ++ ++const uint32_t kSampleFrameCount = 4096u; ++ ++/* Audio driver functions */ ++static int NACLAUD_OpenAudio(_THIS, SDL_AudioSpec* spec); ++static void NACLAUD_CloseAudio(_THIS); ++ ++static void AudioCallback(void* samples, uint32_t buffer_size, PP_TimeDelta, ++ void* data); ++ ++/* Audio driver bootstrap functions */ ++static int NACLAUD_Available(void) { ++ return g_nacl_pp_instance && g_nacl_get_interface; ++} ++ ++static void NACLAUD_DeleteDevice(SDL_AudioDevice* device) { ++ if (device->hidden->audio) { ++ g_nacl_audio_interface->StopPlayback(device->hidden->audio); ++ g_nacl_core_interface->ReleaseResource(device->hidden->audio); ++ device->hidden->audio = 0; ++ } ++} ++ ++static SDL_AudioDevice* NACLAUD_CreateDevice(int devindex) { ++ SDL_AudioDevice* _this; ++ ++ /* Initialize all variables that we clean on shutdown */ ++ _this = (SDL_AudioDevice*)SDL_malloc(sizeof(SDL_AudioDevice)); ++ if (_this) { ++ SDL_memset(_this, 0, (sizeof *_this)); ++ _this->hidden = ++ (struct SDL_PrivateAudioData*)SDL_malloc((sizeof *_this->hidden)); ++ } ++ if ((_this == NULL) || (_this->hidden == NULL)) { ++ SDL_OutOfMemory(); ++ if (_this) { ++ SDL_free(_this); ++ } ++ return (0); ++ } ++ SDL_memset(_this->hidden, 0, (sizeof *_this->hidden)); ++ ++ _this->hidden->mutex = SDL_CreateMutex(); ++ ++ // TODO: Move audio device creation to NACLAUD_OpenAudio. ++ g_nacl_audio_interface = ++ (const PPB_Audio_1_1*)g_nacl_get_interface(PPB_AUDIO_INTERFACE_1_1); ++ g_nacl_audio_config_interface = ++ (const PPB_AudioConfig_1_1*)g_nacl_get_interface( ++ PPB_AUDIO_CONFIG_INTERFACE_1_1); ++ ++ _this->hidden->sample_frame_count = ++ g_nacl_audio_config_interface->RecommendSampleFrameCount( ++ g_nacl_pp_instance, PP_AUDIOSAMPLERATE_44100, kSampleFrameCount); ++ ++ PP_Resource audio_config = g_nacl_audio_config_interface->CreateStereo16Bit( ++ g_nacl_pp_instance, PP_AUDIOSAMPLERATE_44100, ++ _this->hidden->sample_frame_count); ++ _this->hidden->audio = g_nacl_audio_interface->Create( ++ g_nacl_pp_instance, audio_config, AudioCallback, _this); ++ ++ // Start audio playback while we are still on the main thread. ++ g_nacl_audio_interface->StartPlayback(_this->hidden->audio); ++ ++ /* Set the function pointers */ ++ _this->OpenAudio = NACLAUD_OpenAudio; ++ _this->CloseAudio = NACLAUD_CloseAudio; ++ ++ _this->free = NACLAUD_DeleteDevice; ++ ++ return _this; ++} ++ ++AudioBootStrap NACLAUD_bootstrap = { ++ NACLAUD_DRIVER_NAME, "SDL nacl audio driver", ++ NACLAUD_Available, NACLAUD_CreateDevice ++}; ++ ++static void NACLAUD_CloseAudio(_THIS) { ++} ++ ++static void AudioCallback(void* samples, uint32_t buffer_size, PP_TimeDelta, ++ void* data) { ++ SDL_AudioDevice* _this = reinterpret_cast<SDL_AudioDevice*>(data); ++ ++ SDL_LockMutex(_this->hidden->mutex); ++ /* Only do anything if audio is enabled and not paused */ ++ if (_this->enabled && !_this->paused) { ++ SDL_memset(samples, _this->spec.silence, buffer_size); ++ SDL_LockMutex(_this->mixer_lock); ++ (*_this->spec.callback)(_this->spec.userdata, (Uint8*)samples, buffer_size); ++ SDL_UnlockMutex(_this->mixer_lock); ++ } else { ++ SDL_memset(samples, 0, buffer_size); ++ } ++ SDL_UnlockMutex(_this->hidden->mutex); ++ ++ return; ++} ++ ++static int NACLAUD_OpenAudio(_THIS, SDL_AudioSpec* spec) { ++ // We don't care what the user wants. ++ spec->freq = 44100; ++ spec->format = AUDIO_S16LSB; ++ spec->channels = 2; ++ spec->samples = _this->hidden->sample_frame_count; ++ return 1; ++} ++ ++} // extern "C" +diff --git a/src/audio/nacl/SDL_naclaudio.h b/src/audio/nacl/SDL_naclaudio.h +new file mode 100644 +index 0000000..ab52848 +--- /dev/null ++++ b/src/audio/nacl/SDL_naclaudio.h +@@ -0,0 +1,23 @@ ++#include "SDL_config.h" ++ ++#ifndef _SDL_naclaudio_h ++#define _SDL_naclaudio_h ++ ++extern "C" { ++#include "SDL_audio.h" ++#include "../SDL_sysaudio.h" ++#include "SDL_mutex.h" ++} ++ ++#include <ppapi/c/ppb_audio.h> ++ ++/* Hidden "this" pointer for the video functions */ ++#define _THIS SDL_AudioDevice *_this ++ ++struct SDL_PrivateAudioData { ++ SDL_mutex* mutex; ++ int sample_frame_count; ++ PP_Resource audio; ++}; ++ ++#endif /* _SDL_naclaudio_h */ +diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c +index 5c2d81f..7a757a3 100644 +--- a/src/cpuinfo/SDL_cpuinfo.c ++++ b/src/cpuinfo/SDL_cpuinfo.c +@@ -53,6 +53,8 @@ static void illegal_instruction(int sig) + } + #endif /* HAVE_SETJMP */ + ++ ++#if SDL_ASSEMBLY_ROUTINES + static __inline__ int CPU_haveCPUID(void) + { + int has_CPUID = 0; +@@ -280,6 +282,15 @@ done: + return features; + } + ++#else // SDL_ASSEMBLY_ROUTINES ++ ++static __inline__ int CPU_haveCPUID(void) { return 0; } ++static __inline__ int CPU_getCPUIDFeaturesExt(void) { return 0; } ++static __inline__ int CPU_getCPUIDFeatures(void) { return 0; } ++ ++#endif // SDL_ASSEMBLY_ROUTINES ++ ++ + static __inline__ int CPU_haveRDTSC(void) + { + if ( CPU_haveCPUID() ) { +diff --git a/src/main/nacl/pepper_instance.c b/src/main/nacl/pepper_instance.c +new file mode 100644 +index 0000000..7604d37 +--- /dev/null ++++ b/src/main/nacl/pepper_instance.c +@@ -0,0 +1,355 @@ ++/* ++ * Copyright (c) 2011 The Native Client Authors. All rights reserved. ++ * Use of this source code is governed by a BSD-style license that can be ++ * found in the LICENSE file. ++ */ ++#include <assert.h> ++#include <errno.h> ++#include <fcntl.h> ++#include <libtar.h> ++#include <pthread.h> ++#include <stdio.h> ++#include <string.h> ++#include <sys/mount.h> ++#include <unistd.h> ++ ++#include <SDL.h> ++#include <SDL_nacl.h> ++#include <SDL_video.h> ++#include <SDL_main.h> ++ ++#include <ppapi/c/pp_errors.h> ++#include <ppapi/c/pp_instance.h> ++#include <ppapi/c/ppb.h> ++#include <ppapi/c/ppb_input_event.h> ++#include <ppapi/c/ppb_messaging.h> ++#include <ppapi/c/ppb_var.h> ++#include <ppapi/c/ppb_view.h> ++#include <ppapi/c/ppp.h> ++#include <ppapi/c/ppp_input_event.h> ++#include <ppapi/c/ppp_instance.h> ++#include <ppapi/c/pp_rect.h> ++ ++#include "nacl_io/nacl_io.h" ++#include "nacl_io/ioctl.h" ++#include "nacl_io/log.h" ++ ++static PP_Instance g_instance; ++static PPB_GetInterface g_get_browser_interface; ++static struct PPB_Messaging_1_0* g_messaging_interface; ++static struct PPB_Var_1_1* g_var_interface; ++static struct PPB_InputEvent_1_0* g_input_event_interface; ++static struct PPB_View_1_1* g_view_interface; ++static int g_width = 0; ++static int g_height = 0; ++static int g_argc; ++static const char** g_argn; ++static const char** g_argv; ++static const char* g_tty_prefix; ++static pthread_t g_sdl_thread; ++ ++static void* sdl_thread_start(void*); ++static void ProcessArgs(); ++ ++static PP_Bool Instance_DidCreate(PP_Instance instance, uint32_t argc, ++ const char* argn[], const char* argv[]) { ++ int i; ++ ++ g_instance = instance; ++ g_input_event_interface->RequestInputEvents(instance, ++ PP_INPUTEVENT_CLASS_MOUSE); ++ g_input_event_interface->RequestFilteringInputEvents( ++ instance, PP_INPUTEVENT_CLASS_KEYBOARD); ++ ++ nacl_io_init_ppapi(instance, g_get_browser_interface); ++ ++ // Copy args so they can be processed later by the SDL thread. ++ g_argc = argc; ++ g_argn = (const char**)malloc(argc * sizeof(char*)); ++ g_argv = (const char**)malloc(argc * sizeof(char*)); ++ memset(g_argn, 0, argc * sizeof(char*)); ++ memset(g_argv, 0, argc * sizeof(char*)); ++ ++ for (i = 0; i < argc; i++) { ++ if (argn[i]) g_argn[i] = strdup(argn[i]); ++ if (argv[i]) g_argv[i] = strdup(argv[i]); ++ } ++ ++ return PP_TRUE; ++} ++ ++static void Instance_DidDestroy(PP_Instance instance) {} ++ ++static void Instance_DidChangeView(PP_Instance instance, ++ PP_Resource view_resource) { ++ struct PP_Rect view_rect; ++ if (g_width && g_height) return; ++ ++ if (g_view_interface->GetRect(view_resource, &view_rect) == PP_FALSE) { ++ fprintf(stderr, "SDL: Unable to get view rect!\n"); ++ return; ++ } ++ ++ if (view_rect.size.width == g_width && view_rect.size.height == g_height) ++ return; // Size didn't change, no need to update anything. ++ ++ g_width = view_rect.size.width; ++ g_height = view_rect.size.height; ++ ++ SDL_NACL_SetInstance(g_instance, g_get_browser_interface, g_width, g_height); ++ pthread_create(&g_sdl_thread, NULL, sdl_thread_start, NULL); ++} ++ ++/* ++ * Entry point for the main SDL thread. The job of this thread is to ++ * run SDL_main, which in most cases is the application's main() function ++ * re-defined by the pre-processor in SDL_main.h. ++ */ ++static void* sdl_thread_start(void* arg) { ++ char* argv[2]; ++ int rtn; ++ ++ ProcessArgs(); ++ fprintf(stderr, "SDL: calling SDL_main\n"); ++ argv[0] = (char*)"SDL applicaiton"; ++ argv[1] = NULL; ++ rtn = SDL_main(1, argv); ++ fprintf(stderr, "SDL: SDL_main returned: %d\n", rtn); ++ exit(rtn); ++ return NULL; ++} ++ ++static ssize_t TtyOutputHandler(const char* buf, size_t count, void* user_data) { ++ // We prepend the prefix_ to the data in buf, then package it up ++ // and post it as a message to javascript. ++ char* message = (char*)malloc(count + strlen(g_tty_prefix)); ++ strcpy(message, g_tty_prefix); ++ memcpy(message + strlen(g_tty_prefix), buf, count); ++ struct PP_Var var = g_var_interface->VarFromUtf8(message, count + strlen(g_tty_prefix)); ++ g_messaging_interface->PostMessage(g_instance, var); ++ g_var_interface->Release(var); ++ free(message); ++ return count; ++} ++ ++static void ProcessArgs() { ++ int i; ++ int rtn; ++ int mount_default = 1; ++ nacl_io_log("SDL: ProcessArgs %d\n", g_argc); ++ ++ // This could fail if the sdl_mount_http attributes ++ // above created a mount on "/". ++ fprintf(stderr, "SDL: creating memfs on root\n"); ++ ++ rtn = umount("/"); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: umount failed: %s\n", strerror(errno)); ++ ++ rtn = mount("", "/", "memfs", 0, ""); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: mount failed: %s\n", strerror(errno)); ++ ++ rtn = mkdir("/tmp", S_IRWXU | S_IRWXG); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: mkdir /tmp failed: %s\n", strerror(errno)); ++ ++ rtn = mkdir("/home", S_IRWXU | S_IRWXG); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: mkdir /home failed: %s\n", strerror(errno)); ++ ++ rtn = mount("", "/tmp", "html5fs", 0, "type=TEMPORARY"); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: mount /tmp failed: %s\n", strerror(errno)); ++ ++ for (i = 0; i < g_argc; i++) { ++ if (!strcmp(g_argn[i], "ps_stdout")) { ++ int fd1 = open(g_argv[i], O_WRONLY); ++ dup2(fd1, 1); ++ } else if (!strcmp(g_argn[i], "ps_stderr")) { ++ int fd2 = open(g_argv[i], O_WRONLY); ++ dup2(fd2, 2); ++ } else if (!strcmp(g_argn[i], "ps_tty_prefix")) { ++ g_tty_prefix = g_argv[i]; ++ struct tioc_nacl_output handler; ++ handler.handler = TtyOutputHandler; ++ handler.user_data = NULL; ++ int tty_fd = open("/dev/tty", O_WRONLY); ++ if (tty_fd != -1) { ++ ioctl(tty_fd, TIOCNACLOUTPUT, &handler); ++ close(tty_fd); ++ } ++ } else if (!strcmp(g_argn[i], "fs_pers")) { ++ mount_default = 0; ++ char *ptr; ++ long sz = strtol(g_argv[i], &ptr, 10); ++ fprintf(stderr, "SDL: adding html5fs mount size: %ld\n", sz); ++ if (sz > 0) { ++ char params[255]; ++ sprintf(params, "type=PERSISTENT,expected_size=%ld", sz); ++ if (mount("", "/persistent", "html5fs", 0, params)) ++ fprintf (stderr, "mount failed"); ++ } else { ++ fprintf (stderr, "zero fs size"); ++ } ++ } ++ else if (!strcmp(g_argn[i], "fs_http")) { ++ mount_default = 0; ++ mount(g_argv[i], "/http", "httpfs", 0, ""); ++ } else if (!strcmp(g_argn[i], "sdl_mount_http")) { ++ const char* source; ++ const char* target = "/"; ++ char* sep; ++ char buf[64]; ++ int n; ++ ++ const char* q, *p = g_argv[i]; ++ while (*p) { ++ while (*p && isspace(*p)) ++p; ++ if (!*p) break; ++ q = p; ++ while (*p && !isspace(*p)) ++p; ++ ++ n = sizeof(buf) - 1; ++ if (p - q < n) n = p - q; ++ strncpy(buf, q, n); ++ buf[n] = '\0'; ++ ++ sep = strchr(buf, ':'); ++ source = buf; ++ if (sep) { ++ target = sep + 1; ++ *sep = '\0'; ++ } ++ ++ mount_default = 0; ++ fprintf(stderr, "SDL: adding http mount '%s' -> '%s'\n", source, ++ target); ++ rtn = mount(source, target, "httpfs", 0, ""); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: mount failed: %s\n", strerror(errno)); ++ } ++ } ++ } ++ ++ if (mount_default) { ++ // Create an http mount by default ++ fprintf(stderr, "SDL: creating default http mount 1\n"); ++ rtn = chdir("/home"); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: chdir failed: %s\n", strerror(errno)); ++ rtn = mount(".", "/home", "httpfs", 0, ""); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: mount failed: %s\n", strerror(errno)); ++ } ++ ++ for (i = 0; i < g_argc; i++) { ++ nacl_io_log("SDL: arg=%s\n", g_argn[i]); ++ if (!strcasecmp(g_argn[i], "PWD")) { ++ int rtn = chdir(g_argv[i]); ++ if (rtn != 0) ++ nacl_io_log("SDL: chdir(%s) failed\n", g_argv[i]); ++ else ++ nacl_io_log("SDL: chdir(%s)\n", g_argv[i]); ++ } else if (!strcmp(g_argn[i], "sdl_tar_extract")) { ++ const char* source; ++ const char* target = "/"; ++ char* sep; ++ char buf[64]; ++ int n; ++ ++ const char* q, *p = g_argv[i]; ++ while (*p) { ++ while (*p && isspace(*p)) ++p; ++ if (!*p) break; ++ q = p; ++ while (*p && !isspace(*p)) ++p; ++ ++ n = sizeof(buf) - 1; ++ if (p - q < n) n = p - q; ++ strncpy(buf, q, n); ++ buf[n] = '\0'; ++ ++ sep = strchr(buf, ':'); ++ source = buf; ++ if (sep) { ++ target = sep + 1; ++ *sep = '\0'; ++ } ++ ++ fprintf(stderr, "SDL: extracting tar file '%s' -> '%s'\n", source, ++ target); ++ ++ TAR* tar; ++ rtn = tar_open(&tar, (char*)source, NULL, O_RDONLY, 0, 0); ++ if (rtn != 0) { ++ fprintf(stderr, "SDL: tar_open failed\n"); ++ assert(0); ++ continue; ++ } ++ ++ rtn = mkdir(target, S_IRWXU | S_IRWXG); ++ if (rtn != 0) ++ fprintf(stderr, "SDL: mkdir failed: %s\n", strerror(errno)); ++ ++ rtn = tar_extract_all(tar, (char*)target); ++ if (rtn != 0) { ++ fprintf(stderr, "SDL: tar_extract_all failed\n"); ++ assert(0); ++ } ++ ++ rtn = tar_close(tar); ++ if (rtn != 0) { ++ fprintf(stderr, "SDL: tar_clone failed\n"); ++ assert(0); ++ } ++ } ++ } ++ } ++} ++ ++static void Instance_DidChangeFocus(PP_Instance instance, PP_Bool has_focus) {} ++ ++static PP_Bool Instance_HandleDocumentLoad(PP_Instance instance, ++ PP_Resource url_loader) { ++ return PP_FALSE; ++} ++ ++static PP_Bool InputEvent_HandleInputEvent(PP_Instance instance, ++ PP_Resource input_event) { ++ SDL_NACL_PushEvent(input_event); ++ return PP_TRUE; ++} ++ ++PP_EXPORT int32_t ++PPP_InitializeModule(PP_Module module, PPB_GetInterface get_browser) { ++ g_get_browser_interface = get_browser; ++ g_input_event_interface = ++ (struct PPB_InputEvent_1_0*)get_browser(PPB_INPUT_EVENT_INTERFACE_1_0); ++ g_messaging_interface = ++ (struct PPB_InputEvent_1_0*)get_browser(PPB_MESSAGING_INTERFACE_1_0); ++ g_var_interface = (struct PPB_Var_1_1*)get_browser(PPB_VAR_INTERFACE_1_1); ++ g_view_interface = (struct PPB_View_1_1*)get_browser(PPB_VIEW_INTERFACE_1_1); ++ return PP_OK; ++} ++ ++PP_EXPORT const void* PPP_GetInterface(const char* interface_name) { ++ if (strcmp(interface_name, PPP_INSTANCE_INTERFACE) == 0) { ++ static struct PPP_Instance_1_1 instance_interface = { ++ &Instance_DidCreate, ++ &Instance_DidDestroy, ++ &Instance_DidChangeView, ++ &Instance_DidChangeFocus, ++ &Instance_HandleDocumentLoad, ++ }; ++ return &instance_interface; ++ } else if (strcmp(interface_name, PPP_INPUT_EVENT_INTERFACE_0_1) == 0) { ++ static struct PPP_InputEvent_0_1 input_event_interface = { ++ &InputEvent_HandleInputEvent, ++ }; ++ return &input_event_interface; ++ } ++ return NULL; ++} ++ ++PP_EXPORT void PPP_ShutdownModule() {} +diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c +index 479bf34..a3b9119 100644 +--- a/src/thread/pthread/SDL_systhread.c ++++ b/src/thread/pthread/SDL_systhread.c +@@ -81,12 +81,15 @@ void SDL_SYS_SetupThread(void) + int i; + sigset_t mask; + ++ // NativeClient does not yet support signals. ++#ifndef __NACL__ + /* Mask asynchronous signals for this thread */ + sigemptyset(&mask); + for ( i=0; sig_list[i]; ++i ) { + sigaddset(&mask, sig_list[i]); + } + pthread_sigmask(SIG_BLOCK, &mask, 0); ++#endif + + #ifdef PTHREAD_CANCEL_ASYNCHRONOUS + /* Allow ourselves to be asynchronously cancelled */ +diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h +index 1c72e09..9fc1a85 100644 +--- a/src/video/SDL_sysvideo.h ++++ b/src/video/SDL_sysvideo.h +@@ -317,6 +317,9 @@ typedef struct VideoBootStrap { + SDL_VideoDevice *(*create)(int devindex); + } VideoBootStrap; + ++#if SDL_VIDEO_DRIVER_NACL ++extern VideoBootStrap NACL_bootstrap; ++#endif + #if SDL_VIDEO_DRIVER_QUARTZ + extern VideoBootStrap QZ_bootstrap; + #endif +diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c +index e84ef35..f8a5090 100644 +--- a/src/video/SDL_video.c ++++ b/src/video/SDL_video.c +@@ -33,6 +33,9 @@ + + /* Available video drivers */ + static VideoBootStrap *bootstrap[] = { ++#if SDL_VIDEO_DRIVER_NACL ++ &NACL_bootstrap, ++#endif + #if SDL_VIDEO_DRIVER_QUARTZ + &QZ_bootstrap, + #endif +@@ -764,6 +767,8 @@ SDL_Surface * SDL_SetVideoMode (int width, int height, int bpp, Uint32 flags) + #define __SDL_NOGETPROCADDR__ + #elif defined(__MINT__) + #define __SDL_NOGETPROCADDR__ ++#elif defined(__native_client__) ++#define __SDL_NOGETPROCADDR__ + #endif + #ifdef __SDL_NOGETPROCADDR__ + #define SDL_PROC(ret,func,params) video->func=func; +diff --git a/src/video/nacl/SDL_naclevents.cc b/src/video/nacl/SDL_naclevents.cc +new file mode 100644 +index 0000000..c9eaea8 +--- /dev/null ++++ b/src/video/nacl/SDL_naclevents.cc +@@ -0,0 +1,320 @@ ++#include "SDL_config.h" ++ ++#include "SDL_nacl.h" ++ ++extern "C" { ++#include "SDL.h" ++#include "../../events/SDL_sysevents.h" ++#include "../../events/SDL_events_c.h" ++} ++ ++#include "SDL_naclevents_c.h" ++#include "eventqueue.h" ++#include <ppapi/c/pp_point.h> ++#include <ppapi/c/pp_var.h> ++#include <ppapi/c/ppb_input_event.h> ++#include <ppapi/c/ppb_var.h> ++ ++#include <math.h> ++ ++extern const PPB_InputEvent_1_0 *g_nacl_input_event_interface; ++extern const PPB_MouseInputEvent_1_1 *g_nacl_mouse_input_event_interface; ++extern const PPB_WheelInputEvent_1_0 *g_nacl_wheel_input_event_interface; ++extern const PPB_KeyboardInputEvent_1_0 *g_nacl_keyboard_input_event_interface; ++extern const PPB_Var_1_1 *g_nacl_var_interface; ++ ++static EventQueue event_queue; ++ ++static Uint8 translateButton(int32_t button) { ++ switch (button) { ++ case PP_INPUTEVENT_MOUSEBUTTON_LEFT: ++ return SDL_BUTTON_LEFT; ++ case PP_INPUTEVENT_MOUSEBUTTON_MIDDLE: ++ return SDL_BUTTON_MIDDLE; ++ case PP_INPUTEVENT_MOUSEBUTTON_RIGHT: ++ return SDL_BUTTON_RIGHT; ++ case PP_INPUTEVENT_MOUSEBUTTON_NONE: ++ default: ++ return 0; ++ } ++} ++ ++// Translate ASCII code to browser keycode ++static uint8_t translateAscii(uint8_t ascii) { ++ if ('A' <= ascii && ascii <= 'Z') { ++ return ascii; ++ } else if ('a' <= ascii && ascii <= 'z') { ++ return toupper(ascii); ++ } else if ('0' <= ascii && ascii <= '9') { ++ return ascii; ++ } else if (' ' == ascii || '\r' == ascii || '\t' == ascii || ++ '\x1b' == ascii || '\b' == ascii) { ++ return ascii; ++ } else { ++ switch (ascii) { ++ case '!': return '1'; ++ case '@': return '2'; ++ case '#': return '3'; ++ case '$': return '4'; ++ case '%': return '5'; ++ case '^': return '6'; ++ case '&': return '7'; ++ case '*': return '8'; ++ case '(': return '9'; ++ case ')': return '0'; ++ case ';': case ':': return 186; ++ case '=': case '+': return 187; ++ case ',': case '<': return 188; ++ case '-': case '_': return 189; ++ case '.': case '>': return 190; ++ case '/': case '?': return 191; ++ case '`': case '~': return 192; ++ case '[': case '{': return 219; ++ case '\\': case '|': return 220; ++ case ']': case '}': return 221; ++ case '\'': case '"': return 222; ++ default: ++ break; ++ } ++ } ++ return 0; ++} ++ ++// Translate browser keycode to SDLKey ++static SDLKey translateKey(uint32_t code) { ++ if (code >= 'A' && code <= 'Z') ++ return (SDLKey)(code - 'A' + SDLK_a); ++ if (code >= SDLK_0 && code <= SDLK_9) ++ return (SDLKey)code; ++ const uint32_t f1_code = 112; ++ if (code >= f1_code && code < f1_code + 12) ++ return (SDLKey)(code - f1_code + SDLK_F1); ++ const uint32_t kp0_code = 96; ++ if (code >= kp0_code && code < kp0_code + 10) ++ return (SDLKey)(code - kp0_code + SDLK_KP0); ++ switch (code) { ++ case SDLK_BACKSPACE: ++ return SDLK_BACKSPACE; ++ case SDLK_TAB: ++ return SDLK_TAB; ++ case SDLK_RETURN: ++ return SDLK_RETURN; ++ case SDLK_PAUSE: ++ return SDLK_PAUSE; ++ case SDLK_ESCAPE: ++ return SDLK_ESCAPE; ++ case 16: ++ return SDLK_LSHIFT; ++ case 17: ++ return SDLK_LCTRL; ++ case 18: ++ return SDLK_LALT; ++ case 32: ++ return SDLK_SPACE; ++ case 37: ++ return SDLK_LEFT; ++ case 38: ++ return SDLK_UP; ++ case 39: ++ return SDLK_RIGHT; ++ case 40: ++ return SDLK_DOWN; ++ case 106: ++ return SDLK_KP_MULTIPLY; ++ case 107: ++ return SDLK_KP_PLUS; ++ case 109: ++ return SDLK_KP_MINUS; ++ case 110: ++ return SDLK_KP_PERIOD; ++ case 111: ++ return SDLK_KP_DIVIDE; ++ case 45: ++ return SDLK_INSERT; ++ case 46: ++ return SDLK_DELETE; ++ case 36: ++ return SDLK_HOME; ++ case 35: ++ return SDLK_END; ++ case 33: ++ return SDLK_PAGEUP; ++ case 34: ++ return SDLK_PAGEDOWN; ++ case 189: ++ return SDLK_MINUS; ++ case 187: ++ return SDLK_EQUALS; ++ case 219: ++ return SDLK_LEFTBRACKET; ++ case 221: ++ return SDLK_RIGHTBRACKET; ++ case 186: ++ return SDLK_SEMICOLON; ++ case 222: ++ return SDLK_QUOTE; ++ case 220: ++ return SDLK_BACKSLASH; ++ case 188: ++ return SDLK_COMMA; ++ case 190: ++ return SDLK_PERIOD; ++ case 191: ++ return SDLK_SLASH; ++ case 192: ++ return SDLK_BACKQUOTE; ++ default: ++ return SDLK_UNKNOWN; ++ } ++} ++ ++static SDL_Event *copyEvent(SDL_Event *event) { ++ SDL_Event *event_copy = (SDL_Event*)malloc(sizeof(SDL_Event)); ++ *event_copy = *event; ++ return event_copy; ++} ++ ++void SDL_NACL_PushEvent(PP_Resource input_event) { ++ static Uint8 last_scancode = 0; ++ SDL_keysym keysym; ++ static double wheel_clicks_x; ++ static double wheel_clicks_y; ++ SDL_Event event; ++ PP_InputEvent_Type type = g_nacl_input_event_interface->GetType(input_event); ++ ++ if (type == PP_INPUTEVENT_TYPE_MOUSEDOWN || ++ type == PP_INPUTEVENT_TYPE_MOUSEUP) { ++ event.type = (type == PP_INPUTEVENT_TYPE_MOUSEUP) ? SDL_MOUSEBUTTONUP ++ : SDL_MOUSEBUTTONDOWN; ++ event.button.button = translateButton( ++ g_nacl_mouse_input_event_interface->GetButton(input_event)); ++ PP_Point point = ++ g_nacl_mouse_input_event_interface->GetPosition(input_event); ++ event.button.x = point.x; ++ event.button.y = point.y; ++ event_queue.PushEvent(copyEvent(&event)); ++ } else if (type == PP_INPUTEVENT_TYPE_WHEEL) { ++ PP_FloatPoint ticks = ++ g_nacl_wheel_input_event_interface->GetTicks(input_event); ++ wheel_clicks_x += ticks.x; ++ wheel_clicks_y += ticks.y; ++ int sdl_wheel_clicks_x = trunc(wheel_clicks_x); ++ int sdl_wheel_clicks_y = trunc(wheel_clicks_y); ++ event.button.x = event.button.y = 0; ++ event.button.button = ++ (sdl_wheel_clicks_x > 0) ? SDL_BUTTON_X1 : SDL_BUTTON_X2; ++ for (int i = 0; i < abs(sdl_wheel_clicks_x); i++) { ++ event.type = SDL_MOUSEBUTTONDOWN; ++ event_queue.PushEvent(copyEvent(&event)); ++ event.type = SDL_MOUSEBUTTONUP; ++ event_queue.PushEvent(copyEvent(&event)); ++ } ++ event.button.button = ++ (sdl_wheel_clicks_y > 0) ? SDL_BUTTON_WHEELUP : SDL_BUTTON_WHEELDOWN; ++ for (int i = 0; i < abs(sdl_wheel_clicks_y); i++) { ++ event.type = SDL_MOUSEBUTTONDOWN; ++ event_queue.PushEvent(copyEvent(&event)); ++ event.type = SDL_MOUSEBUTTONUP; ++ event_queue.PushEvent(copyEvent(&event)); ++ } ++ wheel_clicks_x -= sdl_wheel_clicks_x; ++ wheel_clicks_y -= sdl_wheel_clicks_y; ++ } else if (type == PP_INPUTEVENT_TYPE_MOUSEMOVE) { ++ event.type = SDL_MOUSEMOTION; ++ PP_Point point = ++ g_nacl_mouse_input_event_interface->GetPosition(input_event); ++ event.motion.x = point.x; ++ event.motion.y = point.y; ++ event_queue.PushEvent(copyEvent(&event)); ++ } else if (type == PP_INPUTEVENT_TYPE_KEYDOWN || ++ type == PP_INPUTEVENT_TYPE_KEYUP || ++ type == PP_INPUTEVENT_TYPE_CHAR) { ++ // PPAPI sends us separate events for KEYDOWN and CHAR; the first one ++ // contains only the keycode, the second one - only the unicode text. ++ // SDL wants both in SDL_PRESSED event :( ++ // For now, ignore the keydown event for printable ascii (32-126) as we ++ // know we'll get a char event and can set sym directly. For everything ++ // else, risk sending an extra SDL_PRESSED with unicode text and zero ++ // keycode for scancode / sym. ++ // It seems that SDL 1.3 is better in this regard. ++ keysym.scancode = ++ g_nacl_keyboard_input_event_interface->GetKeyCode(input_event); ++ PP_Var unicode_var = ++ g_nacl_keyboard_input_event_interface->GetCharacterText(input_event); ++ uint32_t unicode_var_len; ++ keysym.unicode = ++ g_nacl_var_interface->VarToUtf8(unicode_var, &unicode_var_len)[0]; ++ g_nacl_var_interface->Release(unicode_var); ++ keysym.sym = translateKey(keysym.scancode); ++ if (type == PP_INPUTEVENT_TYPE_KEYDOWN) { ++ event.type = SDL_KEYDOWN; ++ last_scancode = keysym.scancode; ++ if (keysym.sym >= ' ' && keysym.sym <= 126) { ++ return; ++ } ++ } else if (type == PP_INPUTEVENT_TYPE_CHAR) { ++ event.type = SDL_KEYDOWN; ++ if (keysym.sym >= ' ' && keysym.sym <= 126) { ++ keysym.scancode = translateAscii(keysym.unicode); ++ keysym.sym = translateKey(keysym.scancode); ++ } else if (last_scancode) { ++ keysym.scancode = last_scancode; ++ keysym.sym = translateKey(keysym.scancode); ++ } ++ } else { // event->type == PP_INPUTEVENT_TYPE_KEYUP ++ event.type = SDL_KEYUP; ++ last_scancode = 0; ++ } ++ keysym.mod = KMOD_NONE; ++ event.key.keysym = keysym; ++ event_queue.PushEvent(copyEvent(&event)); ++ } else if (type == PP_INPUTEVENT_TYPE_MOUSEENTER || ++ type == PP_INPUTEVENT_TYPE_MOUSELEAVE) { ++ event.type = SDL_ACTIVEEVENT; ++ event.active.gain = (type == PP_INPUTEVENT_TYPE_MOUSEENTER) ? 1 : 0; ++ event.active.state = SDL_APPMOUSEFOCUS; ++ event_queue.PushEvent(copyEvent(&event)); ++ } ++} ++ ++void SDL_NACL_SetHasFocus(int has_focus) { ++ SDL_Event event; ++ event.type = SDL_ACTIVEEVENT; ++ event.active.gain = has_focus ? 1 : 0; ++ event.active.state = SDL_APPINPUTFOCUS; ++ event_queue.PushEvent(copyEvent(&event)); ++} ++ ++void SDL_NACL_SetPageVisible(int is_visible) { ++ SDL_Event event; ++ event.type = SDL_ACTIVEEVENT; ++ event.active.gain = is_visible ? 1 : 0; ++ event.active.state = SDL_APPACTIVE; ++ event_queue.PushEvent(copyEvent(&event)); ++} ++ ++void NACL_PumpEvents(_THIS) { ++ SDL_Event* event; ++ while (event = event_queue.PopEvent()) { ++ if (event->type == SDL_MOUSEBUTTONDOWN) { ++ SDL_PrivateMouseButton(SDL_PRESSED, event->button.button, ++ event->button.x, event->button.y); ++ } else if (event->type == SDL_MOUSEBUTTONUP) { ++ SDL_PrivateMouseButton(SDL_RELEASED, event->button.button, ++ event->button.x, event->button.y); ++ } else if (event->type == SDL_MOUSEMOTION) { ++ SDL_PrivateMouseMotion(0, 0, event->motion.x, event->motion.y); ++ } else if (event->type == SDL_KEYDOWN) { ++ SDL_PrivateKeyboard(SDL_PRESSED, &event->key.keysym); ++ } else if (event->type == SDL_KEYUP) { ++ SDL_PrivateKeyboard(SDL_RELEASED, &event->key.keysym); ++ } else if (event->type == SDL_ACTIVEEVENT) { ++ SDL_PrivateAppActive(event->active.gain, event->active.state); ++ } ++ free(event); ++ } ++} ++ ++void NACL_InitOSKeymap(_THIS) { ++ /* do nothing. */ ++} +diff --git a/src/video/nacl/SDL_naclevents_c.h b/src/video/nacl/SDL_naclevents_c.h +new file mode 100644 +index 0000000..71ae309 +--- /dev/null ++++ b/src/video/nacl/SDL_naclevents_c.h +@@ -0,0 +1,7 @@ ++#include "SDL_config.h" ++ ++#include "SDL_naclvideo.h" ++#include "SDL_nacl.h" ++ ++extern void NACL_InitOSKeymap(_THIS); ++extern void NACL_PumpEvents(_THIS); +diff --git a/src/video/nacl/SDL_naclvideo.cc b/src/video/nacl/SDL_naclvideo.cc +new file mode 100644 +index 0000000..f1ababa +--- /dev/null ++++ b/src/video/nacl/SDL_naclvideo.cc +@@ -0,0 +1,465 @@ ++#include "SDL_config.h" ++ ++#include <assert.h> ++ ++#include "SDL_naclvideo.h" ++#include "SDL_naclevents_c.h" ++ ++#include <ppapi/c/pp_completion_callback.h> ++#include <ppapi/c/pp_errors.h> ++#include <ppapi/c/pp_instance.h> ++#include <ppapi/c/pp_point.h> ++#include <ppapi/c/pp_rect.h> ++#include <ppapi/c/pp_size.h> ++#include <ppapi/c/pp_var.h> ++#include <ppapi/c/ppb_core.h> ++#include <ppapi/c/ppb_graphics_2d.h> ++#include <ppapi/c/ppb_graphics_3d.h> ++#include <ppapi/c/ppb_image_data.h> ++#include <ppapi/c/ppb_input_event.h> ++#include <ppapi/c/ppb_instance.h> ++#include <ppapi/c/ppb_opengles2.h> ++#include <ppapi/c/ppb_var.h> ++#include <ppapi/gles2/gl2ext_ppapi.h> ++ ++PP_Instance g_nacl_pp_instance; ++PPB_GetInterface g_nacl_get_interface; ++const PPB_Core_1_0 *g_nacl_core_interface; ++const PPB_Instance_1_0 *g_nacl_instance_interface; ++const PPB_ImageData_1_0 *g_nacl_image_data_interface; ++const PPB_Graphics2D_1_1 *g_nacl_graphics2d_interface; ++const PPB_Graphics3D_1_0 *g_nacl_graphics3d_interface; ++const PPB_OpenGLES2 *g_nacl_opengles2_interface; ++ ++const PPB_InputEvent_1_0 *g_nacl_input_event_interface; ++const PPB_MouseInputEvent_1_1 *g_nacl_mouse_input_event_interface; ++const PPB_WheelInputEvent_1_0 *g_nacl_wheel_input_event_interface; ++const PPB_KeyboardInputEvent_1_0 *g_nacl_keyboard_input_event_interface; ++const PPB_Var_1_1 *g_nacl_var_interface; ++ ++static int g_nacl_video_width; ++static int g_nacl_video_height; ++ ++static int kNaClFlushDelayMs = 20; ++ ++#include "SDL_nacl.h" ++ ++extern "C" { ++ ++#ifdef SDL_VIDEO_OPENGL_REGAL ++#include "SDL_opengl.h" ++#endif ++#include "SDL_video.h" ++#include "SDL_mouse.h" ++#include "../SDL_sysvideo.h" ++#include "../SDL_pixels_c.h" ++#include "../../events/SDL_events_c.h" ++ ++#define NACLVID_DRIVER_NAME "nacl" ++ ++void SDL_NACL_SetInstance(PP_Instance instance, PPB_GetInterface get_interface, ++ int width, int height) { ++ bool is_resize = g_nacl_pp_instance && (width != g_nacl_video_width || ++ height != g_nacl_video_height); ++ ++ g_nacl_pp_instance = instance; ++ g_nacl_get_interface = get_interface; ++ g_nacl_core_interface = ++ (const PPB_Core_1_0 *)get_interface(PPB_CORE_INTERFACE_1_0); ++ g_nacl_instance_interface = ++ (const PPB_Instance_1_0 *)get_interface(PPB_INSTANCE_INTERFACE_1_0); ++ g_nacl_image_data_interface = ++ (const PPB_ImageData_1_0 *)get_interface(PPB_IMAGEDATA_INTERFACE_1_0); ++ g_nacl_graphics2d_interface = ++ (const PPB_Graphics2D_1_1 *)get_interface(PPB_GRAPHICS_2D_INTERFACE_1_1); ++ g_nacl_graphics3d_interface = ++ (const PPB_Graphics3D_1_0 *)get_interface(PPB_GRAPHICS_3D_INTERFACE_1_0); ++ g_nacl_opengles2_interface = ++ (const PPB_OpenGLES2 *)get_interface(PPB_OPENGLES2_INTERFACE_1_0); ++ g_nacl_input_event_interface = ++ (const PPB_InputEvent_1_0 *)get_interface(PPB_INPUT_EVENT_INTERFACE_1_0); ++ g_nacl_mouse_input_event_interface = ++ (const PPB_MouseInputEvent_1_1 *)get_interface( ++ PPB_MOUSE_INPUT_EVENT_INTERFACE_1_1); ++ g_nacl_wheel_input_event_interface = ++ (const PPB_WheelInputEvent_1_0 *)get_interface( ++ PPB_WHEEL_INPUT_EVENT_INTERFACE_1_0); ++ g_nacl_keyboard_input_event_interface = ++ (const PPB_KeyboardInputEvent_1_0 *)get_interface( ++ PPB_KEYBOARD_INPUT_EVENT_INTERFACE_1_0); ++ g_nacl_var_interface = ++ (const PPB_Var_1_1 *)get_interface(PPB_VAR_INTERFACE_1_1); ++ g_nacl_video_width = width; ++ g_nacl_video_height = height; ++ if (is_resize && current_video) { ++ current_video->hidden->ow = width; ++ current_video->hidden->oh = height; ++ SDL_PrivateResize(width, height); ++ } ++} ++ ++static void flush(void *data, int32_t unused); ++ ++/* Initialization/Query functions */ ++static int NACL_VideoInit(_THIS, SDL_PixelFormat *vformat); ++static SDL_Rect **NACL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags); ++static SDL_Surface *NACL_SetVideoMode(_THIS, SDL_Surface *current, int width, ++ int height, int bpp, Uint32 flags); ++static void NACL_VideoQuit(_THIS); ++static void NACL_UpdateRects(_THIS, int numrects, SDL_Rect *rects); ++ ++#ifdef SDL_VIDEO_OPENGL_REGAL ++static int NACL_GL_GetAttribute(_THIS, SDL_GLattr attrib, int *value); ++static int NACL_GL_MakeCurrent(_THIS); ++static void NACL_GL_SwapBuffers(_THIS); ++#endif ++ ++/* The implementation dependent data for the window manager cursor */ ++struct WMcursor { ++ // Fake cursor data to fool SDL into not using its broken (as it seems) ++ // software cursor emulation. ++}; ++ ++static void NACL_FreeWMCursor(_THIS, WMcursor *cursor); ++static WMcursor *NACL_CreateWMCursor(_THIS, Uint8 *data, Uint8 *mask, int w, ++ int h, int hot_x, int hot_y); ++static int NACL_ShowWMCursor(_THIS, WMcursor *cursor); ++static void NACL_WarpWMCursor(_THIS, Uint16 x, Uint16 y); ++ ++static int NACL_Available(void) { ++ return g_nacl_pp_instance != 0; ++} ++ ++static void NACL_DeleteDevice(SDL_VideoDevice *device) { ++ SDL_free(device->hidden); ++ SDL_free(device); ++} ++ ++static SDL_VideoDevice *NACL_CreateDevice(int devindex) { ++ SDL_VideoDevice *device; ++ ++ assert(g_nacl_pp_instance); ++ ++ /* Initialize all variables that we clean on shutdown */ ++ device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); ++ if (device) { ++ SDL_memset(device, 0, (sizeof *device)); ++ device->hidden = ++ (struct SDL_PrivateVideoData *)SDL_malloc((sizeof *device->hidden)); ++ } ++ if (device == NULL || device->hidden == NULL) { ++ SDL_OutOfMemory(); ++ if (device) { ++ SDL_free(device); ++ } ++ return 0; ++ } ++ SDL_memset(device->hidden, 0, (sizeof *device->hidden)); ++ ++ device->hidden->ow = g_nacl_video_width; ++ device->hidden->oh = g_nacl_video_height; ++ ++ // TODO: query the fullscreen size ++ ++ /* Set the function pointers */ ++ device->VideoInit = NACL_VideoInit; ++ device->ListModes = NACL_ListModes; ++ device->SetVideoMode = NACL_SetVideoMode; ++ device->UpdateRects = NACL_UpdateRects; ++ device->VideoQuit = NACL_VideoQuit; ++ device->InitOSKeymap = NACL_InitOSKeymap; ++ device->PumpEvents = NACL_PumpEvents; ++ ++ device->FreeWMCursor = NACL_FreeWMCursor; ++ device->CreateWMCursor = NACL_CreateWMCursor; ++ device->ShowWMCursor = NACL_ShowWMCursor; ++ device->WarpWMCursor = NACL_WarpWMCursor; ++ ++#ifdef SDL_VIDEO_OPENGL_REGAL ++ device->GL_GetAttribute = NACL_GL_GetAttribute; ++ device->GL_MakeCurrent = NACL_GL_MakeCurrent; ++ device->GL_SwapBuffers = NACL_GL_SwapBuffers; ++#endif ++ ++ device->free = NACL_DeleteDevice; ++ ++ return device; ++} ++ ++VideoBootStrap NACL_bootstrap = { ++ NACLVID_DRIVER_NAME, "SDL Native Client video driver", ++ NACL_Available, NACL_CreateDevice ++}; ++ ++int NACL_VideoInit(_THIS, SDL_PixelFormat *vformat) { ++ fprintf(stderr, ++ "SDL: Congratulations you are using the SDL nacl video driver!\n"); ++ ++ /* Determine the screen depth (use default 8-bit depth) */ ++ /* we change this during the SDL_SetVideoMode implementation... */ ++ vformat->BitsPerPixel = 32; ++ vformat->BytesPerPixel = 4; ++ ++ _this->info.current_w = g_nacl_video_width; ++ _this->info.current_h = g_nacl_video_height; ++ ++ /* We're done! */ ++ return 0; ++} ++ ++SDL_Rect **NACL_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) { ++ // TODO: list modes ++ return (SDL_Rect **)-1; ++} ++ ++SDL_Surface *NACL_SetVideoMode(_THIS, SDL_Surface *current, int width, ++ int height, int bpp, Uint32 flags) { ++ ++ fprintf(stderr, "SDL: setvideomode %dx%d bpp=%d opengl=%d flags=%u\n", width, ++ height, bpp, flags & SDL_OPENGL ? 1 : 0, flags); ++ fflush(stderr); ++ ++ if (width > _this->hidden->ow || height > _this->hidden->oh) return NULL; ++ _this->hidden->bpp = bpp = 32; // Let SDL handle pixel format conversion. ++ _this->hidden->w = width; ++ _this->hidden->h = height; ++ ++ if (_this->hidden->context2d) { ++ g_nacl_core_interface->ReleaseResource(_this->hidden->context2d); ++ _this->hidden->context2d = 0; ++ } ++ ++ if (_this->hidden->context3d) { ++ g_nacl_core_interface->ReleaseResource(_this->hidden->context3d); ++ _this->hidden->context3d = 0; ++ } ++ ++ if (flags & SDL_OPENGL) { ++ int32_t attribs[] = { ++ PP_GRAPHICS3DATTRIB_ALPHA_SIZE, 8, ++ PP_GRAPHICS3DATTRIB_DEPTH_SIZE, 24, ++ PP_GRAPHICS3DATTRIB_STENCIL_SIZE, 8, ++ PP_GRAPHICS3DATTRIB_SAMPLES, 0, ++ PP_GRAPHICS3DATTRIB_SAMPLE_BUFFERS, 0, ++ PP_GRAPHICS3DATTRIB_WIDTH, width, ++ PP_GRAPHICS3DATTRIB_HEIGHT, height, ++ PP_GRAPHICS3DATTRIB_NONE ++ }; ++ _this->hidden->context3d = ++ g_nacl_graphics3d_interface->Create(g_nacl_pp_instance, 0, attribs); ++ ++ if (!g_nacl_instance_interface->BindGraphics(g_nacl_pp_instance, ++ _this->hidden->context3d)) { ++ fprintf(stderr, "***** Couldn't bind the graphic3d context *****\n"); ++ return NULL; ++ } ++ } else { ++ PP_Size size = PP_MakeSize(width, height); ++ _this->hidden->context2d = g_nacl_graphics2d_interface->Create( ++ g_nacl_pp_instance, &size, PP_FALSE /* is_always_opaque */); ++ assert(_this->hidden->context2d != 0); ++ ++ if (!g_nacl_instance_interface->BindGraphics(g_nacl_pp_instance, ++ _this->hidden->context2d)) { ++ fprintf(stderr, "***** Couldn't bind the graphic2d context *****\n"); ++ return NULL; ++ } ++ ++ if (_this->hidden->image_data) { ++ g_nacl_core_interface->ReleaseResource(_this->hidden->image_data); ++ } ++ ++ _this->hidden->image_data = g_nacl_image_data_interface->Create( ++ g_nacl_pp_instance, PP_IMAGEDATAFORMAT_BGRA_PREMUL, &size, ++ PP_FALSE /* init_to_zero */); ++ assert(_this->hidden->image_data != 0); ++ ++ current->pixels = ++ g_nacl_image_data_interface->Map(_this->hidden->image_data); ++ } ++ ++ /* Allocate the new pixel format for the screen */ ++ if (!SDL_ReallocFormat(current, bpp, 0xFF0000, 0xFF00, 0xFF, 0)) { ++ SDL_SetError("Couldn't allocate new pixel format for requested mode"); ++ return NULL; ++ } ++ ++ /* Set up the new mode framebuffer */ ++ current->flags = flags & (SDL_FULLSCREEN | SDL_OPENGL); ++ _this->hidden->bpp = bpp; ++ _this->hidden->w = current->w = width; ++ _this->hidden->h = current->h = height; ++ current->pitch = current->w * (bpp / 8); ++ ++ /* We're done */ ++ return current; ++} ++ ++static void NACL_UpdateRects(_THIS, int numrects, SDL_Rect *rects) { ++ if (_this->hidden->context2d == 0) // not initialized ++ return; ++ ++ assert(_this->hidden->image_data); ++ assert(_this->hidden->w > 0); ++ assert(_this->hidden->h > 0); ++ ++ // Clear alpha channel in the ImageData. ++ unsigned char *start = (unsigned char*)_this->screen->pixels; ++ unsigned char *end = ++ start + (_this->hidden->w * _this->hidden->h * _this->hidden->bpp / 8); ++ for (unsigned char *p = start + 3; p < end; p += 4) *p = 0xFF; ++ ++ // Flush on the main thread. ++ for (int i = 0; i < numrects; ++i) { ++ SDL_Rect &r = rects[i]; ++ PP_Point top_left = PP_MakePoint(0, 0); ++ PP_Rect src_rect = PP_MakeRectFromXYWH(r.x, r.y, r.w, r.h); ++ g_nacl_graphics2d_interface->PaintImageData(_this->hidden->context2d, ++ _this->hidden->image_data, ++ &top_left, &src_rect); ++ } ++ ++ g_nacl_graphics2d_interface->Flush(_this->hidden->context2d, ++ PP_BlockUntilComplete()); ++} ++ ++static void NACL_FreeWMCursor(_THIS, WMcursor *cursor) { ++ delete cursor; ++} ++ ++static WMcursor *NACL_CreateWMCursor(_THIS, Uint8 *data, Uint8 *mask, int w, ++ int h, int hot_x, int hot_y) { ++ return new WMcursor(); ++} ++ ++static int NACL_ShowWMCursor(_THIS, WMcursor *cursor) { ++ return 1; // Success! ++} ++ ++static void NACL_WarpWMCursor(_THIS, Uint16 x, Uint16 y) {} ++ ++/* Note: If we are terminated, this could be called in the middle of ++ another SDL video routine -- notably UpdateRects. ++*/ ++void NACL_VideoQuit(_THIS) { ++ if (_this->hidden->context2d) { ++ g_nacl_core_interface->ReleaseResource(_this->hidden->context2d); ++ _this->hidden->context2d = 0; ++ } ++ ++ if (_this->hidden->context3d) { ++ g_nacl_core_interface->ReleaseResource(_this->hidden->context3d); ++ _this->hidden->context3d = 0; ++ } ++ ++ if (_this->hidden->image_data) { ++ g_nacl_image_data_interface->Unmap(_this->hidden->image_data); ++ g_nacl_core_interface->ReleaseResource(_this->hidden->image_data); ++ _this->hidden->image_data = 0; ++ } ++ ++ // No need to free pixels as this is a pointer directly to ++ // the pixel data within the image_data. ++ _this->screen->pixels = NULL; ++} ++ ++#ifdef SDL_VIDEO_OPENGL_REGAL ++static void regalLogCallback(GLenum stream, GLsizei length, ++ const GLchar *message, GLvoid *context) { ++ fprintf(stderr, "regal: %s\n", message); ++} ++ ++static int NACL_GL_GetAttribute(_THIS, SDL_GLattr attrib, int *value) { ++ int unsupported = 0; ++ int nacl_attrib = 0; ++ ++ switch (attrib) { ++ case SDL_GL_RED_SIZE: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_RED_SIZE; ++ break; ++ case SDL_GL_GREEN_SIZE: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_GREEN_SIZE; ++ break; ++ case SDL_GL_BLUE_SIZE: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_BLUE_SIZE; ++ break; ++ case SDL_GL_ALPHA_SIZE: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_ALPHA_SIZE; ++ break; ++ case SDL_GL_DEPTH_SIZE: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_DEPTH_SIZE; ++ break; ++ case SDL_GL_STENCIL_SIZE: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_STENCIL_SIZE; ++ break; ++ case SDL_GL_MULTISAMPLEBUFFERS: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_SAMPLE_BUFFERS; ++ break; ++ case SDL_GL_MULTISAMPLESAMPLES: ++ nacl_attrib = PP_GRAPHICS3DATTRIB_SAMPLES; ++ break; ++ // The rest of the these attributes are not part of PPAPI ++ case SDL_GL_DOUBLEBUFFER: ++ case SDL_GL_BUFFER_SIZE: ++ case SDL_GL_ACCUM_RED_SIZE: ++ case SDL_GL_ACCUM_GREEN_SIZE: ++ case SDL_GL_ACCUM_BLUE_SIZE: ++ case SDL_GL_ACCUM_ALPHA_SIZE: ++ case SDL_GL_STEREO: ++ case SDL_GL_ACCELERATED_VISUAL: ++ case SDL_GL_SWAP_CONTROL: ++ default: ++ unsupported = 1; ++ break; ++ } ++ ++ if (unsupported) { ++ SDL_SetError("OpenGL attribute is unsupported by NaCl: %d", attrib); ++ return -1; ++ } ++ ++ int32_t attribs[] = {nacl_attrib, 0, PP_GRAPHICS3DATTRIB_NONE, }; ++ ++ int retval = g_nacl_graphics3d_interface->GetAttribs(_this->hidden->context3d, ++ attribs); ++ if (retval != PP_OK) { ++ // TODO(sbc): GetAttribs seems to always return PP_ERROR_FAILED(-2). ++ // fprintf(stderr, "SDL: GetAttribs failed %#x -> %d\n", nacl_attrib, ++ // retval); ++ SDL_SetError("Error getting OpenGL attribute (%d) from NaCl: %d", attrib, ++ retval); ++ return -1; ++ } ++ ++ *value = attribs[1]; ++ return 0; ++} ++ ++static int NACL_GL_MakeCurrent(_THIS) { ++ if (!_this->hidden->context3d) { ++ assert(_this->hidden->context3d); ++ SDL_SetError("GL_MakeCurrent called without an OpenGL video mode set"); ++ return -1; ++ } ++ fprintf(stderr, "SDL: making GL context current\n"); ++ glSetCurrentContextPPAPI(_this->hidden->context3d); ++ ++ RegalMakeCurrent(_this->hidden->context3d, ++ (PPB_OpenGLES2 *)g_nacl_opengles2_interface); ++ glLogMessageCallbackREGAL(regalLogCallback); ++ return 0; ++} ++ ++static void NACL_GL_SwapBuffers(_THIS) { ++ if (!_this->hidden->context3d) { ++ assert(_this->hidden->context3d); ++ fprintf(stderr, ++ "SDL: GL_SwapBuffers called without an OpenGL video mode set\n"); ++ return; ++ } ++ g_nacl_graphics3d_interface->SwapBuffers(_this->hidden->context3d, ++ PP_BlockUntilComplete()); ++} ++#endif ++ ++} // extern "C" +diff --git a/src/video/nacl/SDL_naclvideo.h b/src/video/nacl/SDL_naclvideo.h +new file mode 100644 +index 0000000..7dde7dd +--- /dev/null ++++ b/src/video/nacl/SDL_naclvideo.h +@@ -0,0 +1,36 @@ ++#include "SDL_config.h" ++ ++#ifndef _SDL_naclvideo_h ++#define _SDL_naclvideo_h ++ ++extern "C" { ++#include "../SDL_sysvideo.h" ++#include "SDL_mutex.h" ++} ++ ++#include <ppapi/cpp/instance.h> ++#include <ppapi/cpp/graphics_2d.h> ++#include <ppapi/cpp/graphics_3d.h> ++#include <vector> ++ ++ ++/* Hidden "this" pointer for the video functions */ ++#define _THIS SDL_VideoDevice *_this ++ ++ ++/* Private display data */ ++ ++struct SDL_PrivateVideoData { ++ int bpp; ++ int w, h; ++ void *buffer; ++ ++ int ow, oh; // plugin output dimensions ++ int fsw, fsh; // fullscreen dimensions ++ ++ PP_Resource image_data; ++ PP_Resource context2d; // The PPAPI 2D drawing context. ++ PP_Resource context3d; // The PPAPI 3D drawing context. ++}; ++ ++#endif /* _SDL_naclvideo_h */ +diff --git a/src/video/nacl/eventqueue.h b/src/video/nacl/eventqueue.h +new file mode 100644 +index 0000000..0a6a0cd +--- /dev/null ++++ b/src/video/nacl/eventqueue.h +@@ -0,0 +1,40 @@ ++#ifndef _SDL_nacl_eventqueue_h ++#define _SDL_nacl_eventqueue_h ++ ++#include "SDL_mutex.h" ++ ++#include <queue> ++ ++class EventQueue { ++public: ++ EventQueue() { ++ mu_ = SDL_CreateMutex(); ++ } ++ ++ ~EventQueue() { ++ SDL_DestroyMutex(mu_); ++ } ++ ++ SDL_Event* PopEvent() { ++ SDL_LockMutex(mu_); ++ SDL_Event* event = NULL; ++ if (!queue_.empty()) { ++ event = queue_.front(); ++ queue_.pop(); ++ } ++ SDL_UnlockMutex(mu_); ++ return event; ++ } ++ ++ void PushEvent(SDL_Event* event) { ++ SDL_LockMutex(mu_); ++ queue_.push(event); ++ SDL_UnlockMutex(mu_); ++ } ++ ++private: ++ std::queue<SDL_Event*> queue_; ++ SDL_mutex* mu_; ++}; ++ ++#endif // _SDL_nacl_eventqueue_h +diff --git a/test/configure b/test/configure +index 30b56b6..10046ec 100755 +--- a/test/configure ++++ b/test/configure +@@ -1,18 +1,20 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.63. ++# Generated by GNU Autoconf 2.69. ++# ++# ++# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. ++# + # +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## + + # Be more Bourne compatible + DUALCASE=1; export DUALCASE # for MKS sh +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +@@ -20,23 +22,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST + else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; + esac +- + fi + + +- +- +-# PATH needs CR +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- + as_nl=' + ' + export as_nl +@@ -44,7 +38,13 @@ export as_nl + as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' + else +@@ -55,7 +55,7 @@ else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; +- case $arg in ++ case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +@@ -78,13 +78,6 @@ if test "${PATH_SEPARATOR+set}" != set; then + } + fi + +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- + + # IFS + # We need space, tab and new line, in precisely that order. Quoting is +@@ -94,15 +87,16 @@ fi + IFS=" "" $as_nl" + + # Find who we are. Look in the path if we contain no directory separator. +-case $0 in ++as_myself= ++case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done + IFS=$as_save_IFS + + ;; +@@ -114,12 +108,16 @@ if test "x$as_myself" = x; then + fi + if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 +- { (exit 1); exit 1; } ++ exit 1 + fi + +-# Work around bugs in pre-3.0 UWIN ksh. +-for as_var in ENV MAIL MAILPATH +-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : + done + PS1='$ ' + PS2='> ' +@@ -131,330 +129,343 @@ export LC_ALL + LANGUAGE=C + export LANGUAGE + +-# Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1 && +- test "X`expr 00001 : '.*\(...\)'`" = X001; then +- as_expr=expr +-else +- as_expr=false +-fi +- +-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +- as_basename=basename +-else +- as_basename=false +-fi +- +- +-# Name of the executable. +-as_me=`$as_basename -- "$0" || +-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ +- s//\1/ +- q +- } +- /^X\/\(\/\/\)$/{ +- s//\1/ +- q +- } +- /^X\/\(\/\).*/{ +- s//\1/ +- q +- } +- s/.*/./; q'` +- + # CDPATH. +-$as_unset CDPATH +- +- ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++# Use a proper internal environment variable to ensure we don't fall ++ # into an infinite loop, continuously re-executing ourselves. ++ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then ++ _as_can_reexec=no; export _as_can_reexec; ++ # We cannot yet assume a decent shell, so we have to provide a ++# neutralization value for shells without unset; and this also ++# works around shells that cannot unset nonexistent variables. ++# Preserve -v and -x to the replacement shell. ++BASH_ENV=/dev/null ++ENV=/dev/null ++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV ++case $- in # (((( ++ *v*x* | *x*v* ) as_opts=-vx ;; ++ *v* ) as_opts=-v ;; ++ *x* ) as_opts=-x ;; ++ * ) as_opts= ;; ++esac ++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} ++# Admittedly, this is quite paranoid, since all the known shells bail ++# out after a failed `exec'. ++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++as_fn_exit 255 ++ fi ++ # We don't want this to propagate to other subprocesses. ++ { _as_can_reexec=; unset _as_can_reexec;} + if test "x$CONFIG_SHELL" = x; then +- if (eval ":") 2>/dev/null; then +- as_have_required=yes ++ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '\${1+\"\$@\"}'='\"\$@\"' ++ setopt NO_GLOB_SUBST + else +- as_have_required=no ++ case \`(set -o) 2>/dev/null\` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac + fi +- +- if test $as_have_required = yes && (eval ": +-(as_func_return () { +- (exit \$1) +-} +-as_func_success () { +- as_func_return 0 +-} +-as_func_failure () { +- as_func_return 1 +-} +-as_func_ret_success () { +- return 0 +-} +-as_func_ret_failure () { +- return 1 +-} ++" ++ as_required="as_fn_return () { (exit \$1); } ++as_fn_success () { as_fn_return 0; } ++as_fn_failure () { as_fn_return 1; } ++as_fn_ret_success () { return 0; } ++as_fn_ret_failure () { return 1; } + + exitcode=0 +-if as_func_success; then +- : +-else +- exitcode=1 +- echo as_func_success failed. +-fi ++as_fn_success || { exitcode=1; echo as_fn_success failed.; } ++as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } ++as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } ++as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } ++if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +-if as_func_failure; then +- exitcode=1 +- echo as_func_failure succeeded. +-fi +- +-if as_func_ret_success; then +- : + else +- exitcode=1 +- echo as_func_ret_success failed. +-fi +- +-if as_func_ret_failure; then +- exitcode=1 +- echo as_func_ret_failure succeeded. +-fi +- +-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then +- : ++ exitcode=1; echo positional parameters were not saved. ++fi ++test x\$exitcode = x0 || exit 1 ++test -x / || exit 1" ++ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO ++ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO ++ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && ++ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" ++ if (eval "$as_required") 2>/dev/null; then : ++ as_have_required=yes + else +- exitcode=1 +- echo positional parameters were not saved. ++ as_have_required=no + fi ++ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +-test \$exitcode = 0) || { (exit 1); exit 1; } +- +-( +- as_lineno_1=\$LINENO +- as_lineno_2=\$LINENO +- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && +- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +-") 2> /dev/null; then +- : + else +- as_candidate_shells= +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_found=false + for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- case $as_dir in ++ as_found=: ++ case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do +- as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ # Try only shells that exist, to save several forks. ++ as_shell=$as_dir/$as_base ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ CONFIG_SHELL=$as_shell as_have_required=yes ++ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ break 2 ++fi ++fi + done;; + esac ++ as_found=false + done ++$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : ++ CONFIG_SHELL=$SHELL as_have_required=yes ++fi; } + IFS=$as_save_IFS + + +- for as_shell in $as_candidate_shells $SHELL; do +- # Try only shells that exist, to save several forks. +- if { test -f "$as_shell" || test -f "$as_shell.exe"; } && +- { ("$as_shell") 2> /dev/null <<\_ASEOF +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +- setopt NO_GLOB_SUBST +-else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; +-esac +- +-fi +- +- +-: +-_ASEOF +-}; then +- CONFIG_SHELL=$as_shell +- as_have_required=yes +- if { "$as_shell" 2> /dev/null <<\_ASEOF +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +- # is contrary to our usage. Disable this feature. +- alias -g '${1+"$@"}'='"$@"' +- setopt NO_GLOB_SUBST +-else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; ++ if test "x$CONFIG_SHELL" != x; then : ++ export CONFIG_SHELL ++ # We cannot yet assume a decent shell, so we have to provide a ++# neutralization value for shells without unset; and this also ++# works around shells that cannot unset nonexistent variables. ++# Preserve -v and -x to the replacement shell. ++BASH_ENV=/dev/null ++ENV=/dev/null ++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV ++case $- in # (((( ++ *v*x* | *x*v* ) as_opts=-vx ;; ++ *v* ) as_opts=-v ;; ++ *x* ) as_opts=-x ;; ++ * ) as_opts= ;; + esac +- +-fi +- +- +-: +-(as_func_return () { +- (exit $1) +-} +-as_func_success () { +- as_func_return 0 +-} +-as_func_failure () { +- as_func_return 1 +-} +-as_func_ret_success () { +- return 0 +-} +-as_func_ret_failure () { +- return 1 +-} +- +-exitcode=0 +-if as_func_success; then +- : +-else +- exitcode=1 +- echo as_func_success failed. +-fi +- +-if as_func_failure; then +- exitcode=1 +- echo as_func_failure succeeded. +-fi +- +-if as_func_ret_success; then +- : +-else +- exitcode=1 +- echo as_func_ret_success failed. +-fi +- +-if as_func_ret_failure; then +- exitcode=1 +- echo as_func_ret_failure succeeded. +-fi +- +-if ( set x; as_func_ret_success y && test x = "$1" ); then +- : +-else +- exitcode=1 +- echo positional parameters were not saved. ++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} ++# Admittedly, this is quite paranoid, since all the known shells bail ++# out after a failed `exec'. ++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++exit 255 ++fi ++ ++ if test x$as_have_required = xno; then : ++ $as_echo "$0: This script requires a shell more modern than all" ++ $as_echo "$0: the shells that I found on your system." ++ if test x${ZSH_VERSION+set} = xset ; then ++ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" ++ $as_echo "$0: be upgraded to zsh 4.3.4 or later." ++ else ++ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, ++$0: including any error possibly output before this ++$0: message. Then install a modern shell, or manually run ++$0: the script under such a shell if you do have one." ++ fi ++ exit 1 + fi +- +-test $exitcode = 0) || { (exit 1); exit 1; } +- +-( +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } +- +-_ASEOF +-}; then +- break + fi +- + fi ++SHELL=${CONFIG_SHELL-/bin/sh} ++export SHELL ++# Unset more variables known to interfere with behavior of common tools. ++CLICOLOR_FORCE= GREP_OPTIONS= ++unset CLICOLOR_FORCE GREP_OPTIONS + +- done +- +- if test "x$CONFIG_SHELL" != x; then +- for as_var in BASH_ENV ENV +- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +- done +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +-fi ++## --------------------- ## ++## M4sh Shell Functions. ## ++## --------------------- ## ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset + ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status + +- if test $as_have_required = no; then +- echo This script requires a shell more modern than all the +- echo shells that I found on your system. Please install a +- echo modern shell, or manually run the script under such a +- echo shell if you do have one. +- { (exit 1); exit 1; } +-fi ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ + ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + +-fi + +-fi ++} # as_fn_mkdir_p + ++# as_fn_executable_p FILE ++# ----------------------- ++# Test if FILE is an executable regular file. ++as_fn_executable_p () ++{ ++ test -f "$1" && test -x "$1" ++} # as_fn_executable_p ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith + + +-(eval "as_func_return () { +- (exit \$1) +-} +-as_func_success () { +- as_func_return 0 +-} +-as_func_failure () { +- as_func_return 1 +-} +-as_func_ret_success () { +- return 0 +-} +-as_func_ret_failure () { +- return 1 +-} ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error + +-exitcode=0 +-if as_func_success; then +- : ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr + else +- exitcode=1 +- echo as_func_success failed. +-fi +- +-if as_func_failure; then +- exitcode=1 +- echo as_func_failure succeeded. ++ as_expr=false + fi + +-if as_func_ret_success; then +- : ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename + else +- exitcode=1 +- echo as_func_ret_success failed. +-fi +- +-if as_func_ret_failure; then +- exitcode=1 +- echo as_func_ret_failure succeeded. ++ as_basename=false + fi + +-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then +- : ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname + else +- exitcode=1 +- echo positional parameters were not saved. ++ as_dirname=false + fi + +-test \$exitcode = 0") || { +- echo No shell found that supports shell functions. +- echo Please tell bug-autoconf@gnu.org about your system, +- echo including any error possibly output before this message. +- echo This can help us improve future autoconf versions. +- echo Configuration will now proceed without shell functions. +-} +- ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line after each line using $LINENO; the second 'sed' +- # does the real work. The second script uses 'N' to pair each +- # line-number line with the line containing $LINENO, and appends +- # trailing '-' during substitution so that $LINENO is not a special +- # case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # scripts with optimization help from Paolo Bonzini. Blame Lee +- # E. McMahon (1931-1989) for sed's syntax. :-) ++ as_lineno_1=$LINENO as_lineno_1a=$LINENO ++ as_lineno_2=$LINENO as_lineno_2a=$LINENO ++ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && ++ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { ++ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= +@@ -471,9 +482,12 @@ test \$exitcode = 0") || { + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || +- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 +- { (exit 1); exit 1; }; } ++ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + ++ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have ++ # already done that, so ensure we don't try to do so again and fall ++ # in an infinite loop. This has already happened in practice. ++ _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). +@@ -482,29 +496,18 @@ test \$exitcode = 0") || { + exit + } + +- +-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then +- as_dirname=dirname +-else +- as_dirname=false +-fi +- + ECHO_C= ECHO_N= ECHO_T= +-case `echo -n x` in ++case `echo -n x` in #((((( + -n*) +- case `echo 'x\c'` in ++ case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. +- *) ECHO_C='\c';; ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; + esac;; + *) + ECHO_N='-n';; + esac +-if expr a : '\(a\)' >/dev/null 2>&1 && +- test "X`expr 00001 : '.*\(...\)'`" = X001; then +- as_expr=expr +-else +- as_expr=false +-fi + + rm -f conf$$ conf$$.exe conf$$.file + if test -d conf$$.dir; then +@@ -519,49 +522,29 @@ if (echo >conf$$.file) 2>/dev/null; then + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +- # In both cases, we have to default to `cp -p'. ++ # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +- as_ln_s='cp -p' ++ as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else +- as_ln_s='cp -p' ++ as_ln_s='cp -pR' + fi + else +- as_ln_s='cp -p' ++ as_ln_s='cp -pR' + fi + rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + rmdir conf$$.dir 2>/dev/null + + if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: ++ as_mkdir_p='mkdir -p "$as_dir"' + else + test -d ./-p && rmdir ./-p + as_mkdir_p=false + fi + +-if test -x / >/dev/null 2>&1; then +- as_test_x='test -x' +-else +- if ls -dL / >/dev/null 2>&1; then +- as_ls_L_option=L +- else +- as_ls_L_option= +- fi +- as_test_x=' +- eval sh -c '\'' +- if test -d "$1"; then +- test -d "$1/."; +- else +- case $1 in +- -*)set "./$1";; +- esac; +- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in +- ???[sx]*):;;*)false;;esac;fi +- '\'' sh +- ' +-fi +-as_executable_p=$as_test_x ++as_test_x='test -x' ++as_executable_p=as_fn_executable_p + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +@@ -570,11 +553,11 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +- +-exec 7<&0 </dev/null 6>&1 ++test -n "$DJDIR" || exec 7<&0 </dev/null ++exec 6>&1 + + # Name of the host. +-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, ++# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +@@ -589,7 +572,6 @@ cross_compiling=no + subdirs= + MFLAGS= + MAKEFLAGS= +-SHELL=${CONFIG_SHELL-/bin/sh} + + # Identity of this package. + PACKAGE_NAME= +@@ -597,6 +579,7 @@ PACKAGE_TARNAME= + PACKAGE_VERSION= + PACKAGE_STRING= + PACKAGE_BUGREPORT= ++PACKAGE_URL= + + ac_unique_file="README" + ac_subst_vars='LTLIBOBJS +@@ -655,6 +638,7 @@ bindir + program_transform_name + prefix + exec_prefix ++PACKAGE_URL + PACKAGE_BUGREPORT + PACKAGE_STRING + PACKAGE_VERSION +@@ -742,8 +726,9 @@ do + fi + + case $ac_option in +- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; +- *) ac_optarg=yes ;; ++ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *=) ac_optarg= ;; ++ *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. +@@ -788,8 +773,7 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -815,8 +799,7 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -1020,8 +1003,7 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -1037,8 +1019,7 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in +@@ -1068,17 +1049,17 @@ do + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + +- -*) { $as_echo "$as_me: error: unrecognized option: $ac_option +-Try \`$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; } ++ -*) as_fn_error $? "unrecognized option: \`$ac_option' ++Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. +- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && +- { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 +- { (exit 1); exit 1; }; } ++ case $ac_envvar in #( ++ '' | [0-9]* | *[!_$as_cr_alnum]* ) ++ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; ++ esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + +@@ -1087,7 +1068,7 @@ Try \`$0 --help' for more information." >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 +- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ++ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +@@ -1095,15 +1076,13 @@ done + + if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` +- { $as_echo "$as_me: error: missing argument to $ac_option" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "missing argument to $ac_option" + fi + + if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; +- fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 +- { (exit 1); exit 1; }; } ;; ++ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac + fi +@@ -1126,8 +1105,7 @@ do + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac +- { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" + done + + # There might be people who depend on the old broken behavior: `$host' +@@ -1141,8 +1119,6 @@ target=$target_alias + if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe +- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. +- If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +@@ -1157,11 +1133,9 @@ test "$silent" = yes && exec 6>/dev/null + ac_pwd=`pwd` && test -n "$ac_pwd" && + ac_ls_di=`ls -di .` && + ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || +- { $as_echo "$as_me: error: working directory cannot be determined" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "working directory cannot be determined" + test "X$ac_ls_di" = "X$ac_pwd_ls_di" || +- { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "pwd does not report name of working directory" + + + # Find the source files, if location was not specified. +@@ -1200,13 +1174,11 @@ else + fi + if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." +- { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } ++ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" + fi + ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" + ac_abs_confdir=`( +- cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 +- { (exit 1); exit 1; }; } ++ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` + # When building in place, set srcdir=. + if test "$ac_abs_confdir" = "$ac_pwd"; then +@@ -1246,7 +1218,7 @@ Configuration: + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit +- -q, --quiet, --silent do not print \`checking...' messages ++ -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files +@@ -1322,7 +1294,7 @@ Some influential environment variables: + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> +- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if ++ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + XMKMF Path to xmkmf, Makefile generator for X Window System + CPP C preprocessor +@@ -1330,6 +1302,7 @@ Some influential environment variables: + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + ++Report bugs to the package provider. + _ACEOF + ac_status=$? + fi +@@ -1393,21 +1366,187 @@ test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF + configure +-generated by GNU Autoconf 2.63 ++generated by GNU Autoconf 2.69 + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ++Copyright (C) 2012 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF + exit + fi ++ ++## ------------------------ ## ++## Autoconf initialization. ## ++## ------------------------ ## ++ ++# ac_fn_c_try_compile LINENO ++# -------------------------- ++# Try to compile conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_compile () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext ++ if { { ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compile") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_compile ++ ++# ac_fn_c_try_run LINENO ++# ---------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes ++# that executables *can* be run. ++ac_fn_c_try_run () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: program exited with status $ac_status" >&5 ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=$ac_status ++fi ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_run ++ ++# ac_fn_c_try_link LINENO ++# ----------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_link () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext conftest$ac_exeext ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && { ++ test "$cross_compiling" = yes || ++ test -x conftest$ac_exeext ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information ++ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would ++ # interfere with the next link command; also delete a directory that is ++ # left behind by Apple's compiler. We do this before executing the actions. ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_link ++ ++# ac_fn_c_try_cpp LINENO ++# ---------------------- ++# Try to preprocess conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_cpp () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } > conftest.i && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_cpp + cat >config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + + It was created by $as_me, which was +-generated by GNU Autoconf 2.63. Invocation command line was ++generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +@@ -1443,8 +1582,8 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- $as_echo "PATH: $as_dir" +-done ++ $as_echo "PATH: $as_dir" ++ done + IFS=$as_save_IFS + + } >&5 +@@ -1481,9 +1620,9 @@ do + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; ++ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) +- ac_configure_args1="$ac_configure_args1 '$ac_arg'" ++ as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else +@@ -1499,13 +1638,13 @@ do + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args '$ac_arg'" ++ as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done + done +-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } ++{ ac_configure_args0=; unset ac_configure_args0;} ++{ ac_configure_args1=; unset ac_configure_args1;} + + # When interrupted or exit'd, cleanup temporary files, and complete + # config.log. We remove comments because anyway the quotes in there +@@ -1517,11 +1656,9 @@ trap 'exit_status=$? + { + echo + +- cat <<\_ASBOX +-## ---------------- ## ++ $as_echo "## ---------------- ## + ## Cache variables. ## +-## ---------------- ## +-_ASBOX ++## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, + ( +@@ -1530,13 +1667,13 @@ _ASBOX + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( +- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 + $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( +- *) $as_unset $ac_var ;; ++ *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done +@@ -1555,11 +1692,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + ) + echo + +- cat <<\_ASBOX +-## ----------------- ## ++ $as_echo "## ----------------- ## + ## Output variables. ## +-## ----------------- ## +-_ASBOX ++## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do +@@ -1572,11 +1707,9 @@ _ASBOX + echo + + if test -n "$ac_subst_files"; then +- cat <<\_ASBOX +-## ------------------- ## ++ $as_echo "## ------------------- ## + ## File substitutions. ## +-## ------------------- ## +-_ASBOX ++## ------------------- ##" + echo + for ac_var in $ac_subst_files + do +@@ -1590,11 +1723,9 @@ _ASBOX + fi + + if test -s confdefs.h; then +- cat <<\_ASBOX +-## ----------- ## ++ $as_echo "## ----------- ## + ## confdefs.h. ## +-## ----------- ## +-_ASBOX ++## ----------- ##" + echo + cat confdefs.h + echo +@@ -1608,46 +1739,53 @@ _ASBOX + exit $exit_status + ' 0 + for ac_signal in 1 2 13 15; do +- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal ++ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal + done + ac_signal=0 + + # confdefs.h avoids OS command line length limits that DEFS can exceed. + rm -f -r conftest* confdefs.h + ++$as_echo "/* confdefs.h */" > confdefs.h ++ + # Predefined preprocessor variables. + + cat >>confdefs.h <<_ACEOF + #define PACKAGE_NAME "$PACKAGE_NAME" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_TARNAME "$PACKAGE_TARNAME" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_VERSION "$PACKAGE_VERSION" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_STRING "$PACKAGE_STRING" + _ACEOF + +- + cat >>confdefs.h <<_ACEOF + #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" + _ACEOF + ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_URL "$PACKAGE_URL" ++_ACEOF ++ + + # Let the site file select an alternate cache file if it wants to. + # Prefer an explicitly selected file to automatically selected ones. + ac_site_file1=NONE + ac_site_file2=NONE + if test -n "$CONFIG_SITE"; then +- ac_site_file1=$CONFIG_SITE ++ # We do not want a PATH search for config.site. ++ case $CONFIG_SITE in #(( ++ -*) ac_site_file1=./$CONFIG_SITE;; ++ */*) ac_site_file1=$CONFIG_SITE;; ++ *) ac_site_file1=./$CONFIG_SITE;; ++ esac + elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +@@ -1658,19 +1796,23 @@ fi + for ac_site_file in "$ac_site_file1" "$ac_site_file2" + do + test "x$ac_site_file" = xNONE && continue +- if test -r "$ac_site_file"; then +- { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 ++ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 + $as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 +- . "$ac_site_file" ++ . "$ac_site_file" \ ++ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "failed to load site script $ac_site_file ++See \`config.log' for more details" "$LINENO" 5; } + fi + done + + if test -r "$cache_file"; then +- # Some versions of bash will fail to source /dev/null (special +- # files actually), so we avoid doing that. +- if test -f "$cache_file"; then +- { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 ++ # Some versions of bash will fail to source /dev/null (special files ++ # actually), so we avoid doing that. DJGPP emulates it as a regular file. ++ if test /dev/null != "$cache_file" && test -f "$cache_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 + $as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; +@@ -1678,7 +1820,7 @@ $as_echo "$as_me: loading cache $cache_file" >&6;} + esac + fi + else +- { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 + $as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file + fi +@@ -1693,11 +1835,11 @@ for ac_var in $ac_precious_vars; do + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) +- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 + $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) +- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 + $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; +@@ -1707,17 +1849,17 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then +- { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 + $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else +- { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 + $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi +- { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 + $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} +- { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 + $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac +@@ -1729,35 +1871,20 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. +- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; ++ *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi + done + if $ac_cache_corrupted; then +- { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +- { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 + $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + fi +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++## -------------------- ## ++## Main body of script. ## ++## -------------------- ## + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -1784,9 +1911,7 @@ for ac_dir in $srcdir/../build-scripts; do + fi + done + if test -z "$ac_aux_dir"; then +- { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir/../build-scripts" >&5 +-$as_echo "$as_me: error: cannot find install-sh or install.sh in $srcdir/../build-scripts" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "cannot find install-sh, install.sh, or shtool in $srcdir/../build-scripts" "$LINENO" 5 + fi + + # These three variables are undocumented and unsupported, +@@ -1800,35 +1925,27 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + # Make sure we can run config.sub. + $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || +- { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +-{ $as_echo "$as_me:$LINENO: checking build system type" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 + $as_echo_n "checking build system type... " >&6; } +-if test "${ac_cv_build+set}" = set; then ++if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_build_alias=$build_alias + test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + test "x$ac_build_alias" = x && +- { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 + ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || +- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 + $as_echo "$ac_cv_build" >&6; } + case $ac_cv_build in + *-*-*) ;; +-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +-$as_echo "$as_me: error: invalid value of canonical build" >&2;} +- { (exit 1); exit 1; }; };; ++*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; + esac + build=$ac_cv_build + ac_save_IFS=$IFS; IFS='-' +@@ -1844,28 +1961,24 @@ IFS=$ac_save_IFS + case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +-{ $as_echo "$as_me:$LINENO: checking host system type" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 + $as_echo_n "checking host system type... " >&6; } +-if test "${ac_cv_host+set}" = set; then ++if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build + else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || +- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + fi + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 + $as_echo "$ac_cv_host" >&6; } + case $ac_cv_host in + *-*-*) ;; +-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +-$as_echo "$as_me: error: invalid value of canonical host" >&2;} +- { (exit 1); exit 1; }; };; ++*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; + esac + host=$ac_cv_host + ac_save_IFS=$IFS; IFS='-' +@@ -1891,9 +2004,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -1904,24 +2017,24 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -1931,9 +2044,9 @@ if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +@@ -1944,24 +2057,24 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 + $as_echo "$ac_ct_CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -1970,7 +2083,7 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -1984,9 +2097,9 @@ if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -1997,24 +2110,24 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2024,9 +2137,9 @@ fi + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -2038,18 +2151,18 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + if test $ac_prog_rejected = yes; then +@@ -2068,10 +2181,10 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2083,9 +2196,9 @@ if test -z "$CC"; then + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_CC+set}" = set; then ++if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$CC"; then +@@ -2096,24 +2209,24 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:$LINENO: result: $CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 + $as_echo "$CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2127,9 +2240,9 @@ if test -z "$CC"; then + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ++if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$ac_ct_CC"; then +@@ -2140,24 +2253,24 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 + $as_echo "$ac_ct_CC" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -2170,7 +2283,7 @@ done + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 + $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac +@@ -2181,57 +2294,37 @@ fi + fi + + +-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "no acceptable C compiler found in \$PATH ++See \`config.log' for more details" "$LINENO" 5; } + + # Provide some information about the compiler. +-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 ++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 + set X $ac_compile + ac_compiler=$2 +-{ (ac_try="$ac_compiler --version >&5" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compiler --version >&5") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (ac_try="$ac_compiler -v >&5" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compiler -v >&5") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-{ (ac_try="$ac_compiler -V >&5" ++for ac_option in --version -v -V -qversion; do ++ { { ac_try="$ac_compiler $ac_option >&5" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compiler -V >&5") 2>&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } ++ if test -s conftest.err; then ++ sed '10a\ ++... rest of stderr output deleted ... ++ 10q' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ fi ++ rm -f conftest.er1 conftest.err ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++done + +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -2247,8 +2340,8 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-$as_echo_n "checking for C compiler default output file name... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 ++$as_echo_n "checking whether the C compiler works... " >&6; } + ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + + # The possible output files: +@@ -2264,17 +2357,17 @@ do + done + rm -f $ac_rmfiles + +-if { (ac_try="$ac_link_default" ++if { { ac_try="$ac_link_default" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. + # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' + # in a Makefile. We should not override ac_cv_exeext if it was cached, +@@ -2291,7 +2384,7 @@ do + # certainly right. + break;; + *.* ) +- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi +@@ -2310,84 +2403,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext= + else + ac_file='' + fi +- +-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +-$as_echo "$ac_file" >&6; } +-if test -z "$ac_file"; then +- $as_echo "$as_me: failed program was:" >&5 ++if test -z "$ac_file"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++$as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: C compiler cannot create executables +-See \`config.log' for more details." >&2;} +- { (exit 77); exit 77; }; }; } ++as_fn_error 77 "C compiler cannot create executables ++See \`config.log' for more details" "$LINENO" 5; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } + fi +- ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 ++$as_echo_n "checking for C compiler default output file name... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 ++$as_echo "$ac_file" >&6; } + ac_exeext=$ac_cv_exeext + +-# Check that the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-$as_echo_n "checking whether the C compiler works... " >&6; } +-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +-# If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then +- if { ac_try='./$ac_file' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- cross_compiling=no +- else +- if test "$cross_compiling" = maybe; then +- cross_compiling=yes +- else +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'. +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'. +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } +- fi +- fi +-fi +-{ $as_echo "$as_me:$LINENO: result: yes" >&5 +-$as_echo "yes" >&6; } +- + rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check that the compiler produces executables we can run. If not, either +-# the compiler is broken, or we cross compile. +-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-$as_echo_n "checking whether we are cross compiling... " >&6; } +-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-$as_echo "$cross_compiling" >&6; } +- +-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 + $as_echo_n "checking for suffix of executables... " >&6; } +-if { (ac_try="$ac_link" ++if { { ac_try="$ac_link" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) + # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will + # work properly (i.e., refer to `conftest.exe'), while it won't with +@@ -2402,32 +2452,83 @@ for ac_file in conftest.exe conftest conftest.*; do + esac + done + else +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details" "$LINENO" 5; } + fi +- +-rm -f conftest$ac_cv_exeext +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++rm -f conftest conftest$ac_cv_exeext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 + $as_echo "$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include <stdio.h> ++int ++main () ++{ ++FILE *f = fopen ("conftest.out", "w"); ++ return ferror (f) || fclose (f) != 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files="$ac_clean_files conftest.out" ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 ++$as_echo_n "checking whether we are cross compiling... " >&6; } ++if test "$cross_compiling" != yes; then ++ { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++ if { ac_try='./conftest$ac_cv_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then ++ cross_compiling=no ++ else ++ if test "$cross_compiling" = maybe; then ++ cross_compiling=yes ++ else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details" "$LINENO" 5; } ++ fi ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 ++$as_echo "$cross_compiling" >&6; } ++ ++rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ++ac_clean_files=$ac_clean_files_save ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 + $as_echo_n "checking for suffix of object files... " >&6; } +-if test "${ac_cv_objext+set}" = set; then ++if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -2439,17 +2540,17 @@ main () + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (ac_try="$ac_compile" ++if { { ac_try="$ac_compile" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in +@@ -2462,31 +2563,23 @@ else + $as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "cannot compute suffix of object files: cannot compile ++See \`config.log' for more details" "$LINENO" 5; } + fi +- + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 + $as_echo "$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 + $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +-if test "${ac_cv_c_compiler_gnu+set}" = set; then ++if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -2500,37 +2593,16 @@ main () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 + $as_echo "$ac_cv_c_compiler_gnu" >&6; } + if test $ac_compiler_gnu = yes; then + GCC=yes +@@ -2539,20 +2611,16 @@ else + fi + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 + $as_echo_n "checking whether $CC accepts -g... " >&6; } +-if test "${ac_cv_prog_cc_g+set}" = set; then ++if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -2563,35 +2631,11 @@ main () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- CFLAGS="" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ CFLAGS="" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -2602,36 +2646,12 @@ main () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_compile "$LINENO"; then : + +- ac_c_werror_flag=$ac_save_c_werror_flag ++else ++ ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +@@ -2642,42 +2662,17 @@ main () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 + $as_echo "$ac_cv_prog_cc_g" >&6; } + if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +@@ -2694,23 +2689,18 @@ else + CFLAGS= + fi + fi +-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 + $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +-if test "${ac_cv_prog_cc_c89+set}" = set; then ++if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_cv_prog_cc_c89=no + ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include <stdarg.h> + #include <stdio.h> +-#include <sys/types.h> +-#include <sys/stat.h> ++struct stat; + /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ + struct buf { int x; }; + FILE * (*rcsopen) (struct buf *, struct stat *, int); +@@ -2762,32 +2752,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++ if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- + rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break + done +@@ -2798,17 +2765,19 @@ fi + # AC_CACHE_VAL + case "x$ac_cv_prog_cc_c89" in + x) +- { $as_echo "$as_me:$LINENO: result: none needed" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 + $as_echo "none needed" >&6; } ;; + xno) +- { $as_echo "$as_me:$LINENO: result: unsupported" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 + $as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" +- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 + $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; + esac ++if test "x$ac_cv_prog_cc_c89" != xno; then : + ++fi + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -2819,26 +2788,22 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +-{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 + $as_echo_n "checking for an ANSI C-conforming const... " >&6; } +-if test "${ac_cv_c_const+set}" = set; then ++if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int + main () + { +-/* FIXME: Include the comments suggested by Paul. */ ++ + #ifndef __cplusplus +- /* Ultrix mips cc rejects this. */ ++ /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; +- const charset cs; ++ const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; +@@ -2855,8 +2820,9 @@ main () + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; +- { /* SCO 3.2v4 cc rejects this. */ +- char *t; ++ { /* SCO 3.2v4 cc rejects this sort of thing. */ ++ char tx; ++ char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; +@@ -2872,10 +2838,10 @@ main () + iptr p = 0; + ++p; + } +- { /* AIX XL C 1.02.0.0 rejects this saying ++ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ +- struct s { int j; const int *ap[3]; }; +- struct s *b; b->j = 5; ++ struct s { int j; const int *ap[3]; } bx; ++ struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +@@ -2888,41 +2854,18 @@ main () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_cv_c_const=no ++ ac_cv_c_const=no + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 + $as_echo "$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + +-cat >>confdefs.h <<\_ACEOF +-#define const /**/ +-_ACEOF ++$as_echo "#define const /**/" >>confdefs.h + + fi + +@@ -2955,9 +2898,9 @@ case "$host" in + MATHLIB="" + # Extract the first word of "osmesa-config", so it can be a program name with args. + set dummy osmesa-config; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_OSMESA_CONFIG+set}" = set; then ++if ${ac_cv_path_OSMESA_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $OSMESA_CONFIG in +@@ -2970,14 +2913,14 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_OSMESA_CONFIG="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + test -z "$ac_cv_path_OSMESA_CONFIG" && ac_cv_path_OSMESA_CONFIG="no" +@@ -2986,10 +2929,10 @@ esac + fi + OSMESA_CONFIG=$ac_cv_path_OSMESA_CONFIG + if test -n "$OSMESA_CONFIG"; then +- { $as_echo "$as_me:$LINENO: result: $OSMESA_CONFIG" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OSMESA_CONFIG" >&5 + $as_echo "$OSMESA_CONFIG" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + +@@ -3015,7 +2958,7 @@ esac + SDL_VERSION=1.2.10 + + # Check whether --with-sdl-prefix was given. +-if test "${with_sdl_prefix+set}" = set; then ++if test "${with_sdl_prefix+set}" = set; then : + withval=$with_sdl_prefix; sdl_prefix="$withval" + else + sdl_prefix="" +@@ -3023,14 +2966,14 @@ fi + + + # Check whether --with-sdl-exec-prefix was given. +-if test "${with_sdl_exec_prefix+set}" = set; then ++if test "${with_sdl_exec_prefix+set}" = set; then : + withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" + else + sdl_exec_prefix="" + fi + + # Check whether --enable-sdltest was given. +-if test "${enable_sdltest+set}" = set; then ++if test "${enable_sdltest+set}" = set; then : + enableval=$enable_sdltest; + else + enable_sdltest=yes +@@ -3055,9 +2998,9 @@ fi + fi + # Extract the first word of "sdl-config", so it can be a program name with args. + set dummy sdl-config; ac_word=$2 +-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } +-if test "${ac_cv_path_SDL_CONFIG+set}" = set; then ++if ${ac_cv_path_SDL_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 + else + case $SDL_CONFIG in +@@ -3070,14 +3013,14 @@ for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +-done ++ done + IFS=$as_save_IFS + + test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" +@@ -3086,16 +3029,16 @@ esac + fi + SDL_CONFIG=$ac_cv_path_SDL_CONFIG + if test -n "$SDL_CONFIG"; then +- { $as_echo "$as_me:$LINENO: result: $SDL_CONFIG" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 + $as_echo "$SDL_CONFIG" >&6; } + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + + + min_sdl_version=$SDL_VERSION +- { $as_echo "$as_me:$LINENO: checking for SDL - version >= $min_sdl_version" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 + $as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } + no_sdl="" + if test "$SDL_CONFIG" = "no" ; then +@@ -3118,14 +3061,10 @@ $as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + rm -f conf.sdltest +- if test "$cross_compiling" = yes; then ++ if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" + else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include <stdio.h> +@@ -3186,53 +3125,26 @@ int main (int argc, char *argv[]) + + + _ACEOF +-rm -f conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +-$as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_run "$LINENO"; then : + +-( exit $ac_status ) +-no_sdl=yes ++else ++ no_sdl=yes + fi +-rm -rf conftest.dSYM +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + +- + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_sdl" = x ; then +- { $as_echo "$as_me:$LINENO: result: yes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + : + else +- { $as_echo "$as_me:$LINENO: result: no" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl-config script installed by SDL could not be found" +@@ -3247,11 +3159,7 @@ $as_echo "no" >&6; } + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include <stdio.h> +@@ -3270,27 +3178,7 @@ main () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding SDL or finding the wrong" + echo "*** version of SDL. If it is not finding SDL, you'll need to set your" +@@ -3301,18 +3189,13 @@ $as_echo "$ac_try_echo") >&5 + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- echo "*** The test program failed to compile or link. See the file config.log for the" ++ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means SDL was incorrectly installed" + echo "*** or that you have moved SDL since it was installed. In the latter case, you" + echo "*** may want to edit the sdl-config script: $SDL_CONFIG" + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" +@@ -3320,9 +3203,7 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + fi + SDL_CFLAGS="" + SDL_LIBS="" +- { { $as_echo "$as_me:$LINENO: error: *** SDL version $SDL_VERSION not found!" >&5 +-$as_echo "$as_me: error: *** SDL version $SDL_VERSION not found!" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "*** SDL version $SDL_VERSION not found!" "$LINENO" 5 + + fi + +@@ -3337,14 +3218,14 @@ ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 + $as_echo_n "checking how to run the C preprocessor... " >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= + fi + if test -z "$CPP"; then +- if test "${ac_cv_prog_CPP+set}" = set; then ++ if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 + else + # Double quotes because CPP needs to be expanded +@@ -3359,11 +3240,7 @@ do + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #ifdef __STDC__ + # include <limits.h> +@@ -3372,78 +3249,34 @@ cat >>conftest.$ac_ext <<_ACEOF + #endif + Syntax error + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++if ac_fn_c_try_cpp "$LINENO"; then : + ++else + # Broken: fails on valid input. + continue + fi +- +-rm -f conftest.err conftest.$ac_ext ++rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include <ac_nonexistent.h> + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then ++if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. + continue + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- + # Passes both tests. + ac_preproc_ok=: + break + fi +- +-rm -f conftest.err conftest.$ac_ext ++rm -f conftest.err conftest.i conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then ++rm -f conftest.i conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then : + break + fi + +@@ -3455,7 +3288,7 @@ fi + else + ac_cv_prog_CPP=$CPP + fi +-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 + $as_echo "$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes +@@ -3466,100 +3299,49 @@ do + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #ifdef __STDC__ + # include <limits.h> + #else + # include <assert.h> +-#endif +- Syntax error +-_ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then +- : +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++#endif ++ Syntax error ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : + ++else + # Broken: fails on valid input. + continue + fi +- +-rm -f conftest.err conftest.$ac_ext ++rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include <ac_nonexistent.h> + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then ++if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. + continue + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- + # Passes both tests. + ac_preproc_ok=: + break + fi +- +-rm -f conftest.err conftest.$ac_ext ++rm -f conftest.err conftest.i conftest.$ac_ext + + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then +- : ++rm -f conftest.i conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then : ++ + else +- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +-See \`config.log' for more details." >&5 +-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +-See \`config.log' for more details." >&2;} +- { (exit 1); exit 1; }; }; } ++as_fn_error $? "C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details" "$LINENO" 5; } + fi + + ac_ext=c +@@ -3569,12 +3351,12 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-{ $as_echo "$as_me:$LINENO: checking for X" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 + $as_echo_n "checking for X... " >&6; } + + + # Check whether --with-x was given. +-if test "${with_x+set}" = set; then ++if test "${with_x+set}" = set; then : + withval=$with_x; + fi + +@@ -3584,10 +3366,8 @@ if test "x$with_x" = xno; then + have_x=disabled + else + case $x_includes,$x_libraries in #( +- *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5 +-$as_echo "$as_me: error: cannot use X directory names containing '" >&2;} +- { (exit 1); exit 1; }; };; #( +- *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then ++ *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( ++ *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : + $as_echo_n "(cached) " >&6 + else + # One or both of the vars are not set, and there is no cached value. +@@ -3604,7 +3384,7 @@ libdir: + @echo libdir='${LIBDIR}' + _ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then +- # GNU make sometimes prints "make[1]: Entering...", which would confuse us. ++ # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done +@@ -3635,21 +3415,25 @@ fi + # Check X11 before X11Rn because it is often a symlink to the current release. + ac_x_header_dirs=' + /usr/X11/include ++/usr/X11R7/include + /usr/X11R6/include + /usr/X11R5/include + /usr/X11R4/include + + /usr/include/X11 ++/usr/include/X11R7 + /usr/include/X11R6 + /usr/include/X11R5 + /usr/include/X11R4 + + /usr/local/X11/include ++/usr/local/X11R7/include + /usr/local/X11R6/include + /usr/local/X11R5/include + /usr/local/X11R4/include + + /usr/local/include/X11 ++/usr/local/include/X11R7 + /usr/local/include/X11R6 + /usr/local/include/X11R5 + /usr/local/include/X11R4 +@@ -3671,37 +3455,14 @@ ac_x_header_dirs=' + if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include <X11/Xlib.h> + _ACEOF +-if { (ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then ++if ac_fn_c_try_cpp "$LINENO"; then : + # We can compile using X headers with no special include directory. + ac_x_includes= + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir +@@ -3709,8 +3470,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 + fi + done + fi +- +-rm -f conftest.err conftest.$ac_ext ++rm -f conftest.err conftest.i conftest.$ac_ext + fi # $ac_x_includes = no + + if test "$ac_x_libraries" = no; then +@@ -3719,11 +3479,7 @@ if test "$ac_x_libraries" = no; then + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lX11 $LIBS" +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include <X11/Xlib.h> + int +@@ -3734,35 +3490,12 @@ XrmInitialize () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_link") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_test_x conftest$ac_exeext +- }; then ++if ac_fn_c_try_link "$LINENO"; then : + LIBS=$ac_save_LIBS + # We can link X programs with no special library path. + ac_x_libraries= + else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- LIBS=$ac_save_LIBS ++ LIBS=$ac_save_LIBS + for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` + do + # Don't even attempt the hair of trying to link an X program! +@@ -3774,10 +3507,8 @@ do + done + done + fi +- +-rm -rf conftest.dSYM +-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +- conftest$ac_exeext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi # $ac_x_libraries = no + + case $ac_x_includes,$ac_x_libraries in #( +@@ -3798,7 +3529,7 @@ fi + fi # $with_x != no + + if test "$have_x" != yes; then +- { $as_echo "$as_me:$LINENO: result: $have_x" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 + $as_echo "$have_x" >&6; } + no_x=yes + else +@@ -3809,7 +3540,7 @@ else + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" +- { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 + $as_echo "libraries $x_libraries, headers $x_includes" >&6; } + fi + +@@ -3826,14 +3557,10 @@ if test x$have_x = xyes; then + fi + fi + +-{ $as_echo "$as_me:$LINENO: checking for OpenGL support" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL support" >&5 + $as_echo_n "checking for OpenGL support... " >&6; } + have_opengl=no +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + #include "SDL_opengl.h" +@@ -3847,36 +3574,13 @@ main () + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext +-if { (ac_try="$ac_compile" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +-$as_echo "$ac_try_echo") >&5 +- (eval "$ac_compile") 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && { +- test -z "$ac_c_werror_flag" || +- test ! -s conftest.err +- } && test -s conftest.$ac_objext; then ++if ac_fn_c_try_compile "$LINENO"; then : + + have_opengl=yes + +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- + fi +- + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:$LINENO: result: $have_opengl" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_opengl" >&5 + $as_echo "$have_opengl" >&6; } + if test x$have_opengl = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGL" +@@ -3915,13 +3619,13 @@ _ACEOF + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( +- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 + $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( +- *) $as_unset $ac_var ;; ++ *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done +@@ -3929,8 +3633,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) +- # `set' does not quote correctly, so add quotes (double-quote +- # substitution turns \\\\ into \\, and sed turns \\ into \). ++ # `set' does not quote correctly, so add quotes: double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +@@ -3952,12 +3656,23 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + :end' >>confcache + if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then +- test "x$cache_file" != "x/dev/null" && +- { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++ if test "x$cache_file" != "x/dev/null"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 + $as_echo "$as_me: updating cache $cache_file" >&6;} +- cat confcache >$cache_file ++ if test ! -f "$cache_file" || test -h "$cache_file"; then ++ cat confcache >"$cache_file" ++ else ++ case $cache_file in #( ++ */* | ?:*) ++ mv -f confcache "$cache_file"$$ && ++ mv -f "$cache_file"$$ "$cache_file" ;; #( ++ *) ++ mv -f confcache "$cache_file" ;; ++ esac ++ fi ++ fi + else +- { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 + $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi +@@ -4007,14 +3722,15 @@ DEFS=`sed -n "$ac_script" confdefs.h` + + ac_libobjs= + ac_ltlibobjs= ++U= + for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. +- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' + done + LIBOBJS=$ac_libobjs + +@@ -4022,13 +3738,14 @@ LTLIBOBJS=$ac_ltlibobjs + + + +-: ${CONFIG_STATUS=./config.status} ++: "${CONFIG_STATUS=./config.status}" + ac_write_fail=0 + ac_clean_files_save=$ac_clean_files + ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 + $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++as_write_fail=0 ++cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 + #! $SHELL + # Generated by $as_me. + # Run this file to recreate the current configuration. +@@ -4038,17 +3755,18 @@ cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + debug=false + ac_cs_recheck=false + ac_cs_silent=false +-SHELL=\${CONFIG_SHELL-$SHELL} +-_ACEOF + +-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +-## --------------------- ## +-## M4sh Initialization. ## +-## --------------------- ## ++SHELL=\${CONFIG_SHELL-$SHELL} ++export SHELL ++_ASEOF ++cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## + + # Be more Bourne compatible + DUALCASE=1; export DUALCASE # for MKS sh +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +@@ -4056,23 +3774,15 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST + else +- case `(set -o) 2>/dev/null` in +- *posix*) set -o posix ;; ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; + esac +- + fi + + +- +- +-# PATH needs CR +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- + as_nl=' + ' + export as_nl +@@ -4080,7 +3790,13 @@ export as_nl + as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo + as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' + else +@@ -4091,7 +3807,7 @@ else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; +- case $arg in ++ case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +@@ -4114,13 +3830,6 @@ if test "${PATH_SEPARATOR+set}" != set; then + } + fi + +-# Support unset when possible. +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- + + # IFS + # We need space, tab and new line, in precisely that order. Quoting is +@@ -4130,15 +3839,16 @@ fi + IFS=" "" $as_nl" + + # Find who we are. Look in the path if we contain no directory separator. +-case $0 in ++as_myself= ++case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done + IFS=$as_save_IFS + + ;; +@@ -4150,12 +3860,16 @@ if test "x$as_myself" = x; then + fi + if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 +- { (exit 1); exit 1; } ++ exit 1 + fi + +-# Work around bugs in pre-3.0 UWIN ksh. +-for as_var in ENV MAIL MAILPATH +-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : + done + PS1='$ ' + PS2='> ' +@@ -4167,7 +3881,89 @@ export LC_ALL + LANGUAGE=C + export LANGUAGE + +-# Required to use basename. ++# CDPATH. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++ ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith ++ ++ + if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +@@ -4181,8 +3977,12 @@ else + as_basename=false + fi + ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi + +-# Name of the executable. + as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +@@ -4202,76 +4002,25 @@ $as_echo X/"$0" | + } + s/.*/./; q'` + +-# CDPATH. +-$as_unset CDPATH +- +- +- +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { +- +- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO +- # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line after each line using $LINENO; the second 'sed' +- # does the real work. The second script uses 'N' to pair each +- # line-number line with the line containing $LINENO, and appends +- # trailing '-' during substitution so that $LINENO is not a special +- # case at line end. +- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # scripts with optimization help from Paolo Bonzini. Blame Lee +- # E. McMahon (1931-1989) for sed's syntax. :-) +- sed -n ' +- p +- /[$]LINENO/= +- ' <$as_myself | +- sed ' +- s/[$]LINENO.*/&-/ +- t lineno +- b +- :lineno +- N +- :loop +- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ +- t loop +- s/-\n.*// +- ' >$as_me.lineno && +- chmod +x "$as_me.lineno" || +- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 +- { (exit 1); exit 1; }; } +- +- # Don't try to exec as it changes $[0], causing all sort of problems +- # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensitive to this). +- . "./$as_me.lineno" +- # Exit status is that of the last command. +- exit +-} +- +- +-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then +- as_dirname=dirname +-else +- as_dirname=false +-fi ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits + + ECHO_C= ECHO_N= ECHO_T= +-case `echo -n x` in ++case `echo -n x` in #((((( + -n*) +- case `echo 'x\c'` in ++ case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. +- *) ECHO_C='\c';; ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; + esac;; + *) + ECHO_N='-n';; + esac +-if expr a : '\(a\)' >/dev/null 2>&1 && +- test "X`expr 00001 : '.*\(...\)'`" = X001; then +- as_expr=expr +-else +- as_expr=false +-fi + + rm -f conf$$ conf$$.exe conf$$.file + if test -d conf$$.dir; then +@@ -4286,49 +4035,85 @@ if (echo >conf$$.file) 2>/dev/null; then + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +- # In both cases, we have to default to `cp -p'. ++ # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +- as_ln_s='cp -p' ++ as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else +- as_ln_s='cp -p' ++ as_ln_s='cp -pR' + fi + else +- as_ln_s='cp -p' ++ as_ln_s='cp -pR' + fi + rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file + rmdir conf$$.dir 2>/dev/null + ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ ++ ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" ++ ++ ++} # as_fn_mkdir_p + if mkdir -p . 2>/dev/null; then +- as_mkdir_p=: ++ as_mkdir_p='mkdir -p "$as_dir"' + else + test -d ./-p && rmdir ./-p + as_mkdir_p=false + fi + +-if test -x / >/dev/null 2>&1; then +- as_test_x='test -x' +-else +- if ls -dL / >/dev/null 2>&1; then +- as_ls_L_option=L +- else +- as_ls_L_option= +- fi +- as_test_x=' +- eval sh -c '\'' +- if test -d "$1"; then +- test -d "$1/."; +- else +- case $1 in +- -*)set "./$1";; +- esac; +- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in +- ???[sx]*):;;*)false;;esac;fi +- '\'' sh +- ' +-fi +-as_executable_p=$as_test_x ++ ++# as_fn_executable_p FILE ++# ----------------------- ++# Test if FILE is an executable regular file. ++as_fn_executable_p () ++{ ++ test -f "$1" && test -x "$1" ++} # as_fn_executable_p ++as_test_x='test -x' ++as_executable_p=as_fn_executable_p + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +@@ -4338,13 +4123,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + exec 6>&1 ++## ----------------------------------- ## ++## Main body of $CONFIG_STATUS script. ## ++## ----------------------------------- ## ++_ASEOF ++test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +-# Save the log message, to keep $[0] and so on meaningful, and to ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# Save the log message, to keep $0 and so on meaningful, and to + # report actual input values of CONFIG_FILES etc. instead of their + # values after options handling. + ac_log=" + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.63. Invocation command line was ++generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -4371,13 +4162,15 @@ _ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + ac_cs_usage="\ +-\`$as_me' instantiates files from templates according to the +-current configuration. ++\`$as_me' instantiates files and other configuration actions ++from templates according to the current configuration. Unless the files ++and actions are specified as TAGs, all are instantiated by default. + +-Usage: $0 [OPTION]... [FILE]... ++Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit ++ --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files +@@ -4388,16 +4181,17 @@ Usage: $0 [OPTION]... [FILE]... + Configuration files: + $config_files + +-Report bugs to <bug-autoconf@gnu.org>." ++Report bugs to the package provider." + + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.63, +- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.69, ++ with options \\"\$ac_cs_config\\" + +-Copyright (C) 2008 Free Software Foundation, Inc. ++Copyright (C) 2012 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." + +@@ -4412,11 +4206,16 @@ ac_need_defaults=: + while test $# != 0 + do + case $1 in +- --*=*) ++ --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; ++ --*=) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg= ++ ac_shift=: ++ ;; + *) + ac_option=$1 + ac_optarg=$2 +@@ -4430,14 +4229,17 @@ do + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; ++ --config | --confi | --conf | --con | --co | --c ) ++ $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ '') as_fn_error $? "missing file argument" ;; + esac +- CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ++ as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; +@@ -4446,11 +4248,10 @@ do + ac_cs_silent=: ;; + + # This is an error. +- -*) { $as_echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2 +- { (exit 1); exit 1; }; } ;; ++ -*) as_fn_error $? "unrecognized option: \`$1' ++Try \`$0 --help' for more information." ;; + +- *) ac_config_targets="$ac_config_targets $1" ++ *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac +@@ -4467,7 +4268,7 @@ fi + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + if \$ac_cs_recheck; then +- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' +@@ -4498,9 +4299,7 @@ do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + +- *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} +- { (exit 1); exit 1; }; };; ++ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac + done + +@@ -4521,26 +4320,24 @@ fi + # after its creation but before its name has been assigned to `$tmp'. + $debug || + { +- tmp= ++ tmp= ac_tmp= + trap 'exit_status=$? +- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++ : "${ac_tmp:=$tmp}" ++ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status + ' 0 +- trap '{ (exit 1); exit 1; }' 1 2 13 15 ++ trap 'as_fn_exit 1' 1 2 13 15 + } + # Create a (secure) tmp directory for tmp files. + + { + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && +- test -n "$tmp" && test -d "$tmp" ++ test -d "$tmp" + } || + { + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +-} || +-{ +- $as_echo "$as_me: cannot create a temporary directory in ." >&2 +- { (exit 1); exit 1; } +-} ++} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ++ac_tmp=$tmp + + # Set up the scripts for CONFIG_FILES section. + # No need to generate them if there are no CONFIG_FILES. +@@ -4548,7 +4345,13 @@ $debug || + if test -n "$CONFIG_FILES"; then + + +-ac_cr='
' ++ac_cr=`echo X | tr X '\015'` ++# On cygwin, bash can eat \r inside `` if the user requested igncr. ++# But we know of no other shell where ac_cr would be empty at this ++# point, so we can use a bashism as a fallback. ++if test "x$ac_cr" = x; then ++ eval ac_cr=\$\'\\r\' ++fi + ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` + if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +@@ -4556,7 +4359,7 @@ else + ac_cs_awk_cr=$ac_cr + fi + +-echo 'BEGIN {' >"$tmp/subs1.awk" && ++echo 'BEGIN {' >"$ac_tmp/subs1.awk" && + _ACEOF + + +@@ -4565,24 +4368,18 @@ _ACEOF + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" + } >conf$$subs.sh || +- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } +-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` + ac_delim='%!_!# ' + for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || +- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then +- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +@@ -4590,7 +4387,7 @@ done + rm -f conf$$subs.sh + + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +-cat >>"\$tmp/subs1.awk" <<\\_ACAWK && ++cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && + _ACEOF + sed -n ' + h +@@ -4604,7 +4401,7 @@ s/'"$ac_delim"'$// + t delim + :nl + h +-s/\(.\{148\}\).*/\1/ ++s/\(.\{148\}\)..*/\1/ + t more1 + s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ + p +@@ -4618,7 +4415,7 @@ s/.\{148\}// + t nl + :delim + h +-s/\(.\{148\}\).*/\1/ ++s/\(.\{148\}\)..*/\1/ + t more2 + s/["\\]/\\&/g; s/^/"/; s/$/"/ + p +@@ -4638,7 +4435,7 @@ t delim + rm -f conf$$subs.awk + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + _ACAWK +-cat >>"\$tmp/subs1.awk" <<_ACAWK && ++cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +@@ -4670,23 +4467,29 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" + else + cat +-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ +- || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +-$as_echo "$as_me: error: could not setup config files machinery" >&2;} +- { (exit 1); exit 1; }; } ++fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ ++ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 + _ACEOF + +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# VPATH may cause trouble with some makes, so we remove sole $(srcdir), ++# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and + # trailing colons and then remove the whole line if VPATH becomes empty + # (actually we leave an empty line to preserve line numbers). + if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/ +-s/:*\${srcdir}:*/:/ +-s/:*@srcdir@:*/:/ +-s/^\([^=]*=[ ]*\):*/\1/ ++ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ ++h ++s/// ++s/^/:/ ++s/[ ]*$/:/ ++s/:\$(srcdir):/:/g ++s/:\${srcdir}:/:/g ++s/:@srcdir@:/:/g ++s/^:*// + s/:*$// ++x ++s/\(=[ ]*\).*/\1/ ++G ++s/\n// + s/^[^=]*=[ ]*$// + }' + fi +@@ -4704,9 +4507,7 @@ do + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; +- :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} +- { (exit 1); exit 1; }; };; ++ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac +@@ -4725,7 +4526,7 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} + for ac_f + do + case $ac_f in +- -) ac_f="$tmp/stdin";; ++ -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. +@@ -4734,12 +4535,10 @@ $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || +- { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} +- { (exit 1); exit 1; }; };; ++ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac +- ac_file_inputs="$ac_file_inputs '$ac_f'" ++ as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't +@@ -4750,7 +4549,7 @@ $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" +- { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 + $as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. +@@ -4762,10 +4561,8 @@ $as_echo "$as_me: creating $ac_file" >&6;} + esac + + case $ac_tag in +- *:-:* | *:-) cat >"$tmp/stdin" \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ;; ++ *:-:* | *:-) cat >"$ac_tmp/stdin" \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac +@@ -4793,47 +4590,7 @@ $as_echo X"$ac_file" | + q + } + s/.*/./; q'` +- { as_dir="$ac_dir" +- case $as_dir in #( +- -*) as_dir=./$as_dir;; +- esac +- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { +- as_dirs= +- while :; do +- case $as_dir in #( +- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( +- *) as_qdir=$as_dir;; +- esac +- as_dirs="'$as_qdir' $as_dirs" +- as_dir=`$as_dirname -- "$as_dir" || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)[^/].*/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)$/{ +- s//\1/ +- q +- } +- /^X\(\/\).*/{ +- s//\1/ +- q +- } +- s/.*/./; q'` +- test -d "$as_dir" && break +- done +- test -z "$as_dirs" || eval "mkdir $as_dirs" +- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} +- { (exit 1); exit 1; }; }; } ++ as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + + case "$ac_dir" in +@@ -4881,7 +4638,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + # If the template does not know about datarootdir, expand it. + # FIXME: This hack should be removed a few years after 2.60. + ac_datarootdir_hack=; ac_datarootdir_seen= +- + ac_sed_dataroot=' + /datarootdir/ { + p +@@ -4891,12 +4647,11 @@ ac_sed_dataroot=' + /@docdir@/p + /@infodir@/p + /@localedir@/p +-/@mandir@/p +-' ++/@mandir@/p' + case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in + *datarootdir*) ac_datarootdir_seen=yes;; + *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) +- { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 + $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +@@ -4906,7 +4661,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g +- s&\\\${datarootdir}&$datarootdir&g' ;; ++ s&\\\${datarootdir}&$datarootdir&g' ;; + esac + _ACEOF + +@@ -4932,27 +4687,24 @@ s&@abs_builddir@&$ac_abs_builddir&;t t + s&@abs_top_builddir@&$ac_abs_top_builddir&;t t + $ac_datarootdir_hack + " +-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ++eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ ++ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + + test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && +- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && +- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && +- { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +-which seems to be undefined. Please make sure it is defined." >&5 ++ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ ++ "$ac_tmp/out"`; test -z "$ac_out"; } && ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined" >&5 + $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +-which seems to be undefined. Please make sure it is defined." >&2;} ++which seems to be undefined. Please make sure it is defined" >&2;} + +- rm -f "$tmp/stdin" ++ rm -f "$ac_tmp/stdin" + case $ac_file in +- -) cat "$tmp/out" && rm -f "$tmp/out";; +- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; ++ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; ++ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ +- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +-$as_echo "$as_me: error: could not create $ac_file" >&2;} +- { (exit 1); exit 1; }; } ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + +@@ -4962,15 +4714,12 @@ $as_echo "$as_me: error: could not create $ac_file" >&2;} + done # for ac_tag + + +-{ (exit 0); exit 0; } ++as_fn_exit 0 + _ACEOF +-chmod +x $CONFIG_STATUS + ac_clean_files=$ac_clean_files_save + + test $ac_write_fail = 0 || +- { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} +- { (exit 1); exit 1; }; } ++ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + + # configure is writing to config.log, and then calls config.status. +@@ -4991,10 +4740,10 @@ if test "$no_create" != yes; then + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. +- $ac_cs_success || { (exit 1); exit 1; } ++ $ac_cs_success || as_fn_exit 1 + fi + if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then +- { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 + $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + fi + diff --git a/packaging/nacl/ports/sdl/pkg_info b/packaging/nacl/ports/sdl/pkg_info new file mode 100644 index 000000000..2be6d94ee --- /dev/null +++ b/packaging/nacl/ports/sdl/pkg_info @@ -0,0 +1,9 @@ +NAME=sdl +VERSION=1.2.14 +ARCHIVE_ROOT=SDL-1.2.14 +URL=http://www.libsdl.org/release/SDL-1.2.14.tar.gz +LICENSE=LGPL2 +DEPENDS=(libtar regal) +# Disabled on bionic due to regal. +DISABLED_LIBC=(bionic) +SHA1=ba625b4b404589b97e92d7acd165992debe576dd diff --git a/packaging/nacl/ports/zlib/build.sh b/packaging/nacl/ports/zlib/build.sh new file mode 100644 index 000000000..96c860fd0 --- /dev/null +++ b/packaging/nacl/ports/zlib/build.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# Copyright (c) 2011 The Native Client Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# zlib doesn't support custom build directories so we have +# to build directly in the source dir. +BUILD_DIR=${SRC_DIR} +EXECUTABLES="minigzip${NACL_EXEEXT} example${NACL_EXEEXT}" +if [ "${NACL_SHARED}" = "1" ]; then + EXECUTABLES+=" libz.so.1" +fi + +ConfigureStep() { + LogExecute rm -f libz.* + SetupCrossEnvironment + CHOST=${NACL_CROSS_PREFIX} LogExecute ./configure --prefix=${PREFIX} +} + + +RunMinigzip() { +# export LD_LIBRARY_PATH=. +# if echo "hello world" | ./minigzip | ./minigzip -d; then +# echo ' *** minigzip test OK ***' +# else +# echo ' *** minigzip test FAILED ***' +# exit 1 +# fi +# unset LD_LIBRARY_PATH + return 0 +} + + +RunExample() { + export LD_LIBRARY_PATH=. + # This second test does not yet work on nacl (gzopen fails) + #if ./example; then \ + #echo ' *** zlib test OK ***'; \ + #else \ + #echo ' *** zlib test FAILED ***'; \ + #exit 1 + #fi + unset LD_LIBRARY_PATH +} + + +TestStep() { + if [ "${NACL_LIBC}" = "glibc" ]; then + # Tests do not currently run on GLIBC due to fdopen() not working + # TODO(sbc): Remove this once glibc is fixed: + # https://code.google.com/p/nativeclient/issues/detail?id=3362 + return + fi + + if [ "${NACL_ARCH}" = "pnacl" ]; then + local minigzip_pexe="minigzip${NACL_EXEEXT}" + local example_pexe="example${NACL_EXEEXT}" + local minigzip_script="minigzip" + local example_script="example" + TranslateAndWriteSelLdrScript ${minigzip_pexe} x86-32 \ + minigzip.x86-32.nexe ${minigzip_script} + RunMinigzip + TranslateAndWriteSelLdrScript ${minigzip_pexe} x86-64 \ + minigzip.x86-64.nexe ${minigzip_script} + RunMinigzip + TranslateAndWriteSelLdrScript ${example_pexe} x86-32 \ + example.x86-32.nexe ${example_script} + RunExample + TranslateAndWriteSelLdrScript ${example_pexe} x86-64 \ + example.x86-64.nexe ${example_script} + RunExample + else + RunMinigzip + RunExample + fi +} diff --git a/packaging/nacl/ports/zlib/nacl.patch b/packaging/nacl/ports/zlib/nacl.patch new file mode 100644 index 000000000..176552330 --- /dev/null +++ b/packaging/nacl/ports/zlib/nacl.patch @@ -0,0 +1,17 @@ +diff --git a/configure b/configure +index b77a8a8..e52609f 100755 +--- a/configure ++++ b/configure +@@ -188,6 +188,12 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then + *BSD | *bsd* | DragonFly) + LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} + LDCONFIG="ldconfig -m" ;; ++ pnacl) ++ LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ++ EXE='.pexe' ;; ++ nacl) ++ LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ++ EXE='.nexe' ;; + CYGWIN* | Cygwin* | cygwin* | OS/2*) + EXE='.exe' ;; + MINGW* | mingw*) diff --git a/packaging/nacl/ports/zlib/pkg_info b/packaging/nacl/ports/zlib/pkg_info new file mode 100644 index 000000000..22f1701e5 --- /dev/null +++ b/packaging/nacl/ports/zlib/pkg_info @@ -0,0 +1,5 @@ +NAME=zlib +VERSION=1.2.8 +URL=http://www.zlib.net/zlib-1.2.8.tar.gz +LICENSE=CUSTOM:README +SHA1=a4d316c404ff54ca545ea71a27af7dbc29817088 |