packages feed

OpenAL (empty) → 1.3

raw patch · 42 files changed

+16671/−0 lines, 42 filesdep +OpenGLdep +basebuild-type:Customsetup-changed

Dependencies added: OpenGL, base

Files

+ LICENSE view
@@ -0,0 +1,28 @@+Copyright (c) 2003-2005, Sven Panne+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. Neither the name of the author 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+ OpenAL.buildinfo.in view
@@ -0,0 +1,8 @@+-- @configure_input@+-- System-dependent values used by Distribution.Simple.defaultUserHooks+--+buildable: @BUILD_PACKAGE_BOOL@+ghc-options: -DCALLCONV=@CALLCONV@+cc-options: -DCALLCONV=@CALLCONV@+ld-options: @AL_LIBS@+frameworks: @AL_FRAMEWORKS@
+ OpenAL.cabal view
@@ -0,0 +1,55 @@+name:		OpenAL+version:	1.3+license:	BSD3+license-file:	LICENSE+maintainer:	Sven Panne <sven.panne@aedion.de>+category:	Sound+synopsis:	A binding to the OpenAL cross-platform 3D audio API+description:+	A Haskell binding for the OpenAL cross-platform 3D audio API,+	appropriate for use with gaming applications and many other+	types of audio applications.  For more information about OpenAL,+	please see: <http://www.openal.org/>.+extra-source-files:+	config.guess config.sub install-sh+	configure.ac configure config.mk.in OpenAL.buildinfo.in+	include/HsOpenALConfig.h.in include/HsOpenAL.h.in+extra-tmp-files:+	config.log config.status autom4te.cache+	config.mk OpenAL.buildinfo include/HsOpenALConfig.h include/HsOpenAL.h+exposed-modules:+	Sound.OpenAL,+	Sound.OpenAL.AL,+	Sound.OpenAL.AL.ALboolean,+	Sound.OpenAL.AL.Attenuation,+	Sound.OpenAL.AL.BasicTypes,+	Sound.OpenAL.AL.Buffer,+	Sound.OpenAL.AL.BufferInternal,+	Sound.OpenAL.AL.Doppler,+	Sound.OpenAL.AL.Errors,+	Sound.OpenAL.AL.Extensions,+	Sound.OpenAL.AL.Format,+	Sound.OpenAL.AL.Listener,+	Sound.OpenAL.AL.Source,+	Sound.OpenAL.AL.StringQueries,+	Sound.OpenAL.ALC,+	Sound.OpenAL.ALC.BasicTypes,+	Sound.OpenAL.ALC.Capture,+	Sound.OpenAL.ALC.Context,+	Sound.OpenAL.ALC.Device,+	Sound.OpenAL.ALC.Errors,+	Sound.OpenAL.ALC.Extensions+other-modules:+	Sound.OpenAL.AL.PeekPoke,+	Sound.OpenAL.AL.QueryUtils,+	Sound.OpenAL.AL.SourceState,+	Sound.OpenAL.AL.String,+	Sound.OpenAL.ALC.ALCboolean,+	Sound.OpenAL.ALC.QueryUtils,+	Sound.OpenAL.ALC.String,+	Sound.OpenAL.Config,+	Sound.OpenAL.Constants+include-dirs:	include+install-includes: HsOpenAL.h+build-depends:	base, OpenGL+extensions:	CPP, ForeignFunctionInterface
+ Setup.hs view
@@ -0,0 +1,6 @@+module Main (main) where++import Distribution.Simple (defaultMainWithHooks, defaultUserHooks)++main :: IO ()+main = defaultMainWithHooks defaultUserHooks
+ Sound/OpenAL.hs view
@@ -0,0 +1,181 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+--+-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- A convenience module, combining the Haskell bindings for AL and ALC.+--+--------------------------------------------------------------------------------++module Sound.OpenAL (+   -- * A Brief History of OpenAL+   -- $ABriefHistoryOfOpenAL++   -- * What is the OpenAL Audio System?+   -- $WhatIsTheOpenALAudioSystem++   -- * Different Views of OpenAL++   -- ** Programmer\'s View of OpenAL+   -- $ProgrammersViewOfOpenAL++   -- ** Implementor\'s View of OpenAL+   -- $ImplementorsViewOfOpenAL++   -- ** The Specification\'s View of OpenAL+   -- $TheSpecificationsViewOfOpenAL++   -- * Legal stuff+   -- $LegalStuff++     module Sound.OpenAL.AL+   , module Sound.OpenAL.ALC++   -- * Convenience Re-exports from the OpenGL Package+   , module Graphics.Rendering.OpenGL.GL.StateVar+   , ObjectName(..), Vector3(..), Vertex3(..)+) where++import Sound.OpenAL.AL+import Sound.OpenAL.ALC++import Graphics.Rendering.OpenGL.GL.StateVar+import Graphics.Rendering.OpenGL.GL.BufferObjects ( ObjectName(..) )+import Graphics.Rendering.OpenGL.GL.CoordTrans ( Vector3(..) )+import Graphics.Rendering.OpenGL.GL.VertexSpec ( Vertex3(..) )++--------------------------------------------------------------------------------+-- $ABriefHistoryOfOpenAL+-- The first discussions about implementing OpenAL as an audio API complimentary+-- to OpenGL started around 1998. There were a few aborted attempts at creating+-- the headers and a specification, but by late 1999 Loki Entertainment Software+-- was in need for an API of exactly this type and pursued both a specification+-- and a Linux implementation. At around that time, Loki started talking with+-- Creative Labs about standardizing the API and expanding platform support. The+-- OpenAL 1.0 specification was released in early 2000 and compliant OpenAL+-- libraries were released in the same year for Linux, MacOS 8\/9, Windows, and+-- BeOS. Loki Entertainment also shipped several games using OpenAL in 2000:+-- Heavy Gear 2 and Heretic 2 (both under Linux). In 2001, Creative Labs+-- released the first hardware-accelerated OpenAL libraries. The libraries+-- supported the SoundBlaster Live on MacOS 8\/9 and Windows.+--+-- Since 2001, there has been continuous improvement in OpenAL. Some platforms+-- are less relevant than in 2000 (BeOS and MacOS 8\/9 for instance), but more+-- platforms have been added as well (BSD, Solaris, IRIX, Mac OS X, and the+-- popular console gaming platforms). Hardware support is enabled for many+-- Creative and NVIDIA audio devices under Windows as well.+--+-- In terms of product support, OpenAL has been used in a large number of titles+-- over the years, on many platforms (for a list of many of the titles, see+-- <http://www.openal.org/titles.html>).++--------------------------------------------------------------------------------+-- $WhatIsTheOpenALAudioSystem+-- OpenAL (for /Open Audio Library/) is a software interface to audio hardware.+-- The interface consists of a number of functions that allow a programmer to+-- specify the objects and operations in producing high-quality audio output,+-- specifically multichannel output of 3D arrangements of sound sources around a+-- listener.+--+-- The OpenAL API is designed to be cross-platform and easy to use. It resembles+-- the OpenGL API in coding style and conventions. OpenAL uses a syntax+-- resembling that of OpenGL where applicable. For more information on OpenGL,+-- see <http://www.opengl.org/> and the "Graphics.Rendering.OpenGL" module.+--+-- OpenAL is foremost a means to generate audio in a simulated three-dimensional+-- space.  Consequently, legacy audio concepts such as panning and left\/right+-- channels are not directly supported. OpenAL does include extensions+-- compatible with the IA-SIG 3D Level 1 and Level 2 rendering guidelines to+-- handle sound-source directivity and distancerelated attenuation and Doppler+-- effects, as well as environmental effects such as reflection, obstruction,+-- transmission, reverberation. For more information on IA-SIG 3D, see+-- <http://www.iasig.org/wg/closed/3dwg/3dwg.shtml>.+--+-- Like OpenGL, the OpenAL core API has no notion of an explicit rendering+-- context, and operates on an implied current OpenAL Context. Unlike the OpenGL+-- specification, the OpenAL specification includes both the core API (the+-- actual OpenAL API, see "Sound.OpenAL.AL") and the operating system bindings+-- of the ALC API (the /Audio Library Context/, see "Sound.OpenAL.ALC"). Unlike+-- OpenGL\'s GLX, WGL and other OS-specific bindings, the ALC API is portable+-- across platforms as well.++--------------------------------------------------------------------------------+-- $ProgrammersViewOfOpenAL+-- To the programmer, OpenAL is a set of commands that allow the specification+-- of sound sources and a listener in three dimensions, combined with commands+-- that control how these sound sources are rendered into the output buffer. The+-- effect of OpenAL commands is not guaranteed to be immediate, as there are+-- latencies depending on the implementation, but ideally such latency should+-- not be noticeable to the user.+--+-- A typical program that uses OpenAL begins with calls to open a sound device+-- which is used to process output and play it on attached hardware (speakers or+-- headphones). Then, calls are made to allocate an AL context and associate it+-- with the device. Once an AL context is allocated, the programmer is free to+-- issue AL commands. Some calls are used to render sources (point and+-- directional sources, looping or not), while others affect the rendering of+-- these sources including how they are attenuated by distance and relative+-- orientation.++--------------------------------------------------------------------------------+-- $ImplementorsViewOfOpenAL+-- To the implementor, OpenAL is a set of commands that affect the operation of+-- CPU and sound hardware. If the hardware consists only of an addressable+-- output buffer, then OpenAL must be implemented almost entirely on the host+-- CPU. In some cases audio hardware provides DSP-based and other acceleration+-- in various degrees. The OpenAL implementor\'s task is to provide the CPU+-- software interface while dividing the work for each AL command between the+-- CPU and the audio hardware. This division should be tailored to the available+-- audio hardware to obtain optimum performance in carrying out AL calls.+--+-- OpenAL maintains a considerable amount of state information. This state+-- controls how the sources are rendered into the output buffer. Some of this+-- state is directly available to the user: he or she can make calls to obtain+-- its value. Some of it, however, is visible only by the effect it has on what+-- is rendered. One of the main goals of the OpenAL specification is to make+-- OpenAL state information explicit, to elucidate how it changes, and to+-- indicate what its effects are.++--------------------------------------------------------------------------------+-- $TheSpecificationsViewOfOpenAL+-- The OpenAL specification (see <http://www.openal.org/documentation.html>)+-- views OpenAL as a state machine that controls a multichannel processing+-- system to synthesize a digital stream, passing sample data through a chain of+-- parametrized digital audio signal processing operations. This model should+-- engender a specification that satisfies the needs of both programmers and+-- implementors. It does not, however, necessarily provide a model for+-- implementation. Any proper implementation must produce results conforming to+-- those produced by the methods specified in the OpenAL specification, but+-- there may be ways to carry out a particular computation that are more+-- efficient than the one specified.++--------------------------------------------------------------------------------+-- $LegalStuff+-- The documentation is more or less based upon the OpenAL 1.1 Specification and+-- Reference, which is in turn based upon the older OpenAL Specification and+-- Reference (1.0), published in June 2000. Both copyright notices are presented+-- below:+--+-- Version 1.1: Published June 2005, Copyright (c) 2005 by authors+--+-- Version 1.0 Draft Edition: Published June 2000, Copyright (c) 1999-2000 by+-- Loki Software+--+-- Permission is granted to make and distribute verbatim copies of this manual+-- provided the copyright notice and this permission notice are preserved on all+-- copies.  Permission is granted to copy and distribute translations of this+-- manual into another language, under the above conditions for modified+-- versions, except that this permission notice may be stated in a translation+-- approved by the copyright owners.+--+-- BeOS is a trademark of PalmSource, Inc. Linux is a trademark of Linus+-- Torvalds. Macintosh and Apple are trademarks of Apple Computer, Inc. OpenAL+-- is a trademark of Creative Labs, Inc. OpenGL is a trademark of Silicon+-- Graphics, Inc. UNIX is a trademark of X\/Open Group. Windows is a trademark+-- of Microsoft Corp. X Window System is a trademark of X Consortium, Inc. All+-- other trademarks are property of their respective owners.
+ Sound/OpenAL/AL.hs view
@@ -0,0 +1,128 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to chapters 2 (OpenAL Operation), 3 (State and State+-- Requests), 4 (Listener and Sources) and 5 (Buffers) of the OpenAL+-- Specification and Reference (version 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL (+   -- * OpenAL Fundamentals+   -- $OpenALFundamentals++   -- * Basic AL Operation+   -- $BasicALOperation++   -- * Time and Frequency+   -- $TimeAndFrequency++   -- * Space and Distance+   -- $SpaceAndDistance++   -- * Coordinate System+   -- $CoordinateSystem++   module Sound.OpenAL.AL.BasicTypes,+   module Sound.OpenAL.AL.Errors,+   module Sound.OpenAL.AL.StringQueries,+   module Sound.OpenAL.AL.Attenuation,+   module Sound.OpenAL.AL.Doppler,+   module Sound.OpenAL.AL.Listener,+   module Sound.OpenAL.AL.Source,+   module Sound.OpenAL.AL.Buffer,+   module Sound.OpenAL.AL.Extensions+) where++import Sound.OpenAL.AL.BasicTypes+import Sound.OpenAL.AL.Errors+import Sound.OpenAL.AL.StringQueries+import Sound.OpenAL.AL.Attenuation+import Sound.OpenAL.AL.Doppler+import Sound.OpenAL.AL.Listener+import Sound.OpenAL.AL.Source+import Sound.OpenAL.AL.Buffer+import Sound.OpenAL.AL.Extensions++--------------------------------------------------------------------------------+-- $OpenALFundamentals+-- OpenAL is concerned with rendering audio into an output buffer and collecting+-- audio data from an input buffer. OpenAL\'s primary use is assumed to be for+-- spatialized audio. There is no support for MIDI.+--+-- OpenAL has three fundamental primitives or objects: 'Buffer's, 'Source's, and+-- a single listener (see "Sound.OpenAL.AL.Listener"). Each object can be+-- changed independently; the setting of one object does not affect the setting+-- of others. The application can also set modes that affect processing. Modes+-- are set, objects specified, and other OpenAL operations performed by sending+-- commands in the form of function or procedure calls.+--+-- Sources store locations, directions, and other attributes of an object in 3D+-- space and have a buffer associated with them for playback. When the program+-- wants to play a sound, it controls execution through a source object. Sources+-- are processed independently from each other.+--+-- Buffers store compressed or uncompressed audio data. It is common to+-- initialize a large set of buffers when the program first starts (or at+-- non-critical times during execution, between levels in a game, for+-- instance). Buffers are referred to by sources. Data (audio sample data) is+-- associated with buffers.+--+-- There is only one listener (per audio context). The listener attributes are+-- similar to source attributes, but are used to represent where the user is+-- hearing the audio from. The influence of all the sources from the perspective+-- of the listener is mixed and played for the user.++--------------------------------------------------------------------------------+-- $BasicALOperation+-- OpenAL can be used for a variety of audio playback tasks, and is an excellent+-- complement to OpenGL for real-time rendering, see+-- "Graphics.Rendering.OpenGL". A programmer who is familiar with OpenGL will+-- immediately notice the similarities between the two APIs in that they+-- describe their 3D environments using similar methods.+-- +-- For an OpenGL\/OpenAL program, most of the audio programming will be in two+-- places in the code: initialization of the program, and the rendering loop. An+-- OpenGL\/OpenAL program will typically contain a section where the graphics+-- and audio systems are initialized, although it may be spread into multiple+-- functions. For OpenAL, initialization normally consists of creating a+-- context, creating the initial set of buffers, loading the buffers with sample+-- data, creating sources, attaching buffers to sources, setting locations and+-- directions for the listener and sources, and setting the initial values for+-- state global to OpenAL.++--------------------------------------------------------------------------------+-- $TimeAndFrequency+-- By default, OpenAL uses seconds and Hertz as units for time and frequency,+-- respectively. A float or integral value of one for a variable that specifies+-- quantities like duration, latency, delay, or any other parameter measured as+-- time, specifies 1 second. For frequency, the basic unit is 1\/second, or+-- Hertz. In other words, sample frequencies and frequency cut-offs or filter+-- parameters specifying frequencies are expressed in units of Hertz.++--------------------------------------------------------------------------------+-- $SpaceAndDistance+-- OpenAL does not define the units of measurement for distances. The+-- application is free to use meters, inches, or parsecs. OpenAL provides means+-- for simulating the natural attenuation of sound according to distance, and to+-- exaggerate or reduce this effect.  However, the resulting effects do not+-- depend on the distance unit used by the application to express source and+-- listener coordinates. OpenAL calculations are scale invariant.  The+-- specification assumes Euclidean calculation of distances, and mandates that+-- if two sources are sorted with respect to the Euclidean metric, the distance+-- calculation used by the implementation has to preserve that order.++--------------------------------------------------------------------------------+-- $CoordinateSystem+-- OpenAL - like OpenGL - uses a right-handed Cartesian coordinate system (RHS),+-- where in a frontal default view X (thumb) points right, Y (index finger)+-- points up, and Z (middle finger) points towards the viewer\/camera. To switch+-- from a left handed coordinate system (LHS) to a right handed coordinate+-- systems, flip the sign on the Z coordinate.
+ Sound/OpenAL/AL/ALboolean.hs view
@@ -0,0 +1,30 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.ALboolean+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This is a purely internal module for (un-)marshaling ALboolean.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.ALboolean (+   marshalALboolean, unmarshalALboolean+) where++import Sound.OpenAL.AL.BasicTypes ( ALboolean )+import Sound.OpenAL.Constants ( al_FALSE, al_TRUE )++--------------------------------------------------------------------------------++marshalALboolean :: Bool -> ALboolean+marshalALboolean False = al_FALSE+marshalALboolean True  = al_TRUE++unmarshalALboolean :: ALboolean -> Bool+unmarshalALboolean = (/= al_FALSE)
+ Sound/OpenAL/AL/Attenuation.hs view
@@ -0,0 +1,211 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Attenuation+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 3.4 (Attenuation By Distance) of the+-- OpenAL Specification and Reference (version 1.1).+-- +--------------------------------------------------------------------------------++module Sound.OpenAL.AL.Attenuation (+   -- * Introduction+   -- $Introduction++   -- * Handling the Distance Model+   DistanceModel(..), distanceModel++   -- * Evaluation of Gain\/Attenuation Related State+   -- $EvaluationOfGainAttenuationRelatedState++   -- * No Culling By Distance+   -- $NoCullingByDistance+) where++import Foreign.Marshal.Alloc ( alloca )+import Foreign.Ptr ( Ptr )+import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar )+import Sound.OpenAL.AL.BasicTypes ( ALint, ALenum )+import Sound.OpenAL.AL.PeekPoke ( peek1 )+import Sound.OpenAL.AL.QueryUtils (+   GetPName(GetDistanceModel), marshalGetPName )+import Sound.OpenAL.Constants (+   al_NONE, al_INVERSE_DISTANCE, al_INVERSE_DISTANCE_CLAMPED,+   al_LINEAR_DISTANCE, al_LINEAR_DISTANCE_CLAMPED, al_EXPONENT_DISTANCE,+   al_EXPONENT_DISTANCE_CLAMPED )++#ifdef __HADDOCK__+import Sound.OpenAL.AL.Source (+   sourceGain, gainBounds, coneAngles, coneOuterGain, referenceDistance,+   rolloffFactor, maxDistance )+#endif++--------------------------------------------------------------------------------+-- $Introduction+-- Samples usually use the entire dynamic range of the chosen format\/encoding,+-- independent of their real world intensity. In other words, a jet engine and a+-- clockwork both will have samples with full amplitude. The application will+-- then have to adjust source gain accordingly to account for relative+-- differences.+-- +-- Source gain is then attenuated by distance. The effective attenuation of a+-- source depends on many factors, among which distance attenuation and source+-- and listener gain are only some of the contributing factors. Even if the+-- source and listener gain exceed 1 (amplification beyond the guaranteed+-- dynamic range), distance and other attenuation might ultimately limit the+-- overall gain to a value below 1.++--------------------------------------------------------------------------------+-- $EvaluationOfGainAttenuationRelatedState+-- While amplification\/attenuation commute (multiplication of scaling factors),+-- clamping operations do not. The order in which various gain related+-- operations are applied is:+-- +-- 1. Distance attenuation is calculated first, including minimum+-- ('referenceDistance') and maximum ('maxDistance') thresholds.+-- +-- 2. The result is then multiplied by source gain.+-- +-- 3. If the source is directional (the inner cone angle is less than the outer+-- cone angle, see 'coneAngles'), an angle-dependent attenuation is calculated+-- depending on 'coneOuterGain', and multiplied with the distance-dependent+-- attenuation. The resulting attenuation factor for the given angle and+-- distance between listener and source is multiplied with 'sourceGain'.+-- +-- 4. The effective gain computed this way is compared against 'gainBounds'.+-- +-- 5. The result is guaranteed to be clamped to 'gainBounds', and subsequently+-- multiplied by listener gain which serves as an overall volume control.+-- +-- The implementation is free to clamp listener gain if necessary due to+-- hardware or implementation constraints.++--------------------------------------------------------------------------------+-- $NoCullingByDistance+-- With the DS3D compatible inverse clamped distance model, OpenAL provides a+-- per-source 'maxDistance' attribute that can be used to define a distance+-- beyond which the source will not be further attenuated by distance. The DS3D+-- distance attenuation model and its clamping of volume is also extended by a+-- mechanism to cull (mute) sources from processing, based on distance. However,+-- the OpenAL does not support culling a source from processing based on a+-- distance threshold.+-- +-- At this time OpenAL is not meant to support culling at all. Culling based on+-- distance, or bounding volumes, or other criteria, is best left to the+-- application. For example, the application might employ sophisticated+-- techniques to determine whether sources are audible that are beyond the scope+-- of OpenAL. In particular, rule based culling inevitably introduces acoustic+-- artifacts. E.g. if the listener-source distance is nearly equal to the culling+-- threshold distance, but varies above and below, there will be popping+-- artifacts in the absence of hysteresis.++--------------------------------------------------------------------------------++-- | OpenAL currently supports six modes of operation with respect to distance+-- attenuation, including one that is similar to the IASIG I3DL2 model. The+-- application chooses one of these models (or chooses to disable+-- distance-dependent attenuation) on a per-context basis.+--+-- The distance used in the formulas for the \"clamped\" modes below is clamped+-- to be in the range between 'referenceDistance' and 'maxDistance':+--+-- /clamped distance/ =+--    max('referenceDistance', min(/distance/, 'maxDistance'))+--+-- The linear models are not physically realistic, but do allow full attenuation+-- of a source beyond a specified distance. The OpenAL implementation is still+-- free to apply any range clamping as necessary.+-- +-- With all the distance models, if the formula can not be evaluated then the+-- source will not be attenuated. For example, if a linear model is being used+-- with 'referenceDistance' equal to 'maxDistance', then the gain equation will+-- have a divide-by-zero error in it. In this case, there is no attenuation for+-- that source.++data DistanceModel =+     NoAttenuation+   -- ^ Bypass all distance attenuation calculation for all sources. The+   --   implementation is expected to optimize this situation.+   | InverseDistance+   -- ^ Inverse distance rolloff model, which is equivalent to the IASIG I3DL2+   --   model with the exception that 'referenceDistance' does not imply any+   --   clamping.+   --+   --   /gain/ = 'referenceDistance' \/ ('referenceDistance' ++   --             'rolloffFactor' \* (/distance/ - 'referenceDistance'))+   --+   --   The 'referenceDistance' parameter used here is a per-source attribute+   --   which is the distance at which the listener will experience gain+   --   (unless the implementation had to clamp effective gain to the available+   --   dynamic range). 'rolloffFactor' is per-source parameter the application+   --   can use to increase or decrease the range of a source by decreasing or+   --   increasing the attenuation, respectively. The default value is 1. The+   --   implementation is free to optimize for a 'rolloffFactor' value of 0,+   --   which indicates that the application does not wish any distance+   --   attenuation on the respective source.+   | InverseDistanceClamped+   -- ^ Inverse Distance clamped model, which is essentially the inverse+   --   distance rolloff model, extended to guarantee that for distances below+   --   'referenceDistance', gain is clamped. This mode is equivalent to the+   --   IASIG I3DL2 distance model.+   | LinearDistance+   -- ^ Linear distance rolloff model, modeling a linear dropoff in gain as+   -- distance increases between the source and listener.+   --+   --   /gain/ = (1 - 'rolloffFactor' \* (/distance/ - 'referenceDistance') \/+   --            ('maxDistance' - 'referenceDistance'))+   | LinearDistanceClamped+   -- ^ Linear Distance clamped model, which is the linear model, extended to+   --   guarantee that for distances below 'referenceDistance', gain is clamped.+   | ExponentDistance+   -- ^ Exponential distance rolloff model, modeling an exponential dropoff in+   --   gain as distance increases between the source and listener.+   --+   --   /gain/ = (/distance/ \/ 'referenceDistance') \*\* (- 'rolloffFactor')+   | ExponentDistanceClamped+   -- ^ Exponential Distance clamped model, which is the exponential model,+   --   extended to guarantee that for distances below 'referenceDistance',+   --   gain is clamped.+   deriving ( Eq, Ord, Show )++marshalDistanceModel :: DistanceModel -> ALenum+marshalDistanceModel x = case x of+   NoAttenuation -> al_NONE+   InverseDistance -> al_INVERSE_DISTANCE+   InverseDistanceClamped -> al_INVERSE_DISTANCE_CLAMPED+   LinearDistance -> al_LINEAR_DISTANCE+   LinearDistanceClamped -> al_LINEAR_DISTANCE_CLAMPED+   ExponentDistance -> al_EXPONENT_DISTANCE+   ExponentDistanceClamped -> al_EXPONENT_DISTANCE_CLAMPED++unmarshalDistanceModel :: ALenum -> DistanceModel+unmarshalDistanceModel x+   | x == al_NONE = NoAttenuation+   | x == al_INVERSE_DISTANCE = InverseDistance+   | x == al_INVERSE_DISTANCE_CLAMPED = InverseDistanceClamped+   | x == al_LINEAR_DISTANCE = LinearDistance+   | x == al_LINEAR_DISTANCE_CLAMPED = LinearDistanceClamped+   | x == al_EXPONENT_DISTANCE = ExponentDistance+   | x == al_EXPONENT_DISTANCE_CLAMPED = ExponentDistanceClamped+   | otherwise = error ("unmarshalDistanceModel: illegal value " ++ show x)++-- | Contains the current per-context distance model.++distanceModel :: StateVar DistanceModel+distanceModel =+   makeStateVar+      (alloca $ \buf -> do+          alGetIntegerv (marshalGetPName GetDistanceModel) buf+          peek1 (unmarshalDistanceModel . fromIntegral) buf)+      (alDistanceModel . marshalDistanceModel)++foreign import CALLCONV unsafe "alGetIntegerv"+   alGetIntegerv :: ALenum -> Ptr ALint -> IO ()++foreign import CALLCONV unsafe "alDistanceModel"+   alDistanceModel :: ALenum -> IO ()
+ Sound/OpenAL/AL/BasicTypes.hs view
@@ -0,0 +1,49 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.BasicTypes+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 2.2 (Primitive Types) of the OpenAL+-- Specification and Reference (version 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.BasicTypes (+   -- * Primitive Types+   -- $PrimitiveTypes++   -- * Floating-Point Computation+   -- $FloatingPointComputation++   ALboolean, ALchar, ALbyte, ALubyte, ALshort, ALushort, ALint, ALuint,+   ALsizei, ALenum, ALfloat, ALdouble+) where++import Sound.OpenAL.Config++--------------------------------------------------------------------------------+-- $PrimitiveTypes+-- As OpenAL is meant to allow for seamless integration with OpenGL code if+-- needed, the OpenAL library primitive (scalar) data types mimic the OpenGL+-- data types. Guaranteed minimum sizes are stated for OpenGL data types, but+-- the actual choice of C data type is left to the implementation. All+-- implementations on a given binary architecture, however, must use a common+-- definition of these data types.+ +--------------------------------------------------------------------------------+-- $FloatingPointComputation+-- Any representable floating-point value is legal as input to an OpenAL command+-- that requires floating point data. The result of providing a value that is+-- not a floating point number to such a command is unspecified, but must not+-- lead to OpenAL being interrupted or terminated. In IEEE arithmetic, for+-- example, providing a negative zero or a denormalized number to an OpenAL+-- command yields predictable results, while providing a NaN or infinity yields+-- unspecified results.  Some calculations require division. In such cases+-- (including implied divisions required by vector normalizations), a division+-- by zero produces an unspecified result but must not lead to OpenAL+-- interruption or termination.
+ Sound/OpenAL/AL/Buffer.hs view
@@ -0,0 +1,182 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Buffer+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to chapter 6 (Buffers) of the OpenAL Specification+-- and Reference (version 1.1).+--+-- A buffer encapsulates OpenAL state related to storing sample data. The+-- application can request and release buffer objects, and fill them with+-- data. Data can be supplied compressed and encoded as long as the format is+-- supported. Buffers can, internally, contain waveform data as uncompressed or+-- compressed samples.+-- +-- Unlike source (see "Sound.OpenAL.AL.Source") and listener (see+-- "Sound.OpenAL.AL.Listener") objects, buffer objects can be shared among AL+-- contexts. Buffers are referenced by sources. A single buffer can be referred+-- to by multiple sources. This separation allows drivers and hardware to+-- optimize storage and processing where applicable.+-- +-- The simplest supported format for buffer data is PCM. PCM data is assumed to+-- use the processor\'s native byte order. Other formats use the byte order+-- native to that format.+-- +-- At this time, buffer states are defined for purposes of discussion. The+-- states described in this section are not exposed through the API (can not be+-- queried, or be set directly), and the state description used in the+-- implementation might differ from this.+--+-- A buffer is considered to be in one of the following states, with respect to+-- all sources:+--+-- [/unused/] The buffer is not included in any queue for any source. In+-- particular, the buffer is neither pending nor current for any source. The+-- buffer name can be deleted at this time.+--+-- [/processed/] The buffer is listed in the queue of at least one source, but+-- is neither pending nor current for any source. The buffer can be deleted as+-- soon as it has been unqueued for all sources it is queued with.+--+-- [/pending/] There is at least one source for which the buffer has been queued,+-- for which the buffer data has not yet been dereferenced. The buffer can only+-- be unqueued for those sources that have dereferenced the data in the buffer+-- in its entirety, and cannot be deleted or changed.+--+-- The buffer state is dependent on the state of all sources that is has been+-- queued for. A single queue occurrence of a buffer propagates the buffer state+-- (over all sources) from /unused/ to /processed/ or higher. Sources that are+-- in the 'Stopped' or 'Initial' states still have queue entries that cause+-- buffers to be /processed/.+-- +-- A single queue entry with a single source for which the buffer is not yet+-- /processed/ propagates the buffer\'s queuing state to /pending/.+-- +-- Buffers that are /processed/ for a given source can be unqueued from that+-- source\'s queue. Buffers that have been unqueued from all sources are+-- /unused/. Buffers that are /unused/ can be deleted, or changed by writing+-- 'bufferData'.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.Buffer (+   Buffer, MemoryRegion(..), Format(..), BufferData(..), bufferData+) where++import Foreign.Marshal.Alloc ( alloca )+import Foreign.Ptr ( Ptr, nullPtr )+import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar )+import Sound.OpenAL.AL.BufferInternal ( Buffer )+import Sound.OpenAL.AL.BasicTypes ( ALint, ALsizei, ALenum )+import Sound.OpenAL.AL.Format ( Format(..), marshalFormat )+import Sound.OpenAL.AL.PeekPoke ( peek1 )+import Sound.OpenAL.ALC.Context ( Frequency )+import Sound.OpenAL.Constants ( al_FREQUENCY, al_SIZE, al_BITS, al_CHANNELS )++#ifdef __HADDOCK__+import Sound.OpenAL.AL.SourceState ( SourceState(..) )+import Sound.OpenAL.AL.Errors ( ALErrorCategory(..) )+#endif++--------------------------------------------------------------------------------++data MemoryRegion a = MemoryRegion (Ptr a) ALsizei+#ifdef __HADDOCK__+-- Help Haddock a bit, because it doesn't do any instance inference.+instance Eq (MemoryRegion a)+instance Ord (MemoryRegion a)+instance Show (MemoryRegion a)+#else+   deriving ( Eq, Ord, Show )+#endif++data BufferData a = BufferData (MemoryRegion a) Format Frequency+#ifdef __HADDOCK__+-- Help Haddock a bit, because it doesn't do any instance inference.+instance Eq (BufferData a)+instance Ord (BufferData a)+instance Show (BufferData a)+#else+   deriving ( Eq, Ord, Show )+#endif++--------------------------------------------------------------------------------++-- | A special case of buffer state is the actual sound sample data stored in+-- association with the buffer. Applications can specify sample data using+-- 'bufferData'.+--+-- The data specified is copied to an internal software, or if possible,+-- hardware buffer. The implementation is free to apply decompression,+-- conversion, resampling, and filtering as needed. The internal format of the+-- buffer is not exposed to the application, and not accessible.+--+-- Buffers containing audio data with more than one channel will be played+-- without 3D spatialization features, these formats are normally used for+-- background music. Applications should always check for an error condition+-- after attempting to specify buffer data in case an implementation has to+-- generate an 'ALOutOfMemory' or a conversion related 'ALInvalidValue' error.+-- The application is free to reuse the memory specified by the data pointer+-- once 'bufferData' is set. The implementation has to dereference, e.g. copy,+-- the data while accessing 'bufferData' execution.++bufferData :: Buffer -> StateVar (BufferData a)+bufferData buffer = makeStateVar (getBufferData buffer) (setBufferData buffer)++getBufferData :: Buffer -> IO (BufferData a)+getBufferData buffer = do+   channels <- getBufferi buffer Channels+   bits <- getBufferi buffer Bits+   raw <- return nullPtr -- ToDo: AL_DATA query missing!!!+   size <- getBufferi buffer Size+   frequency <- getBufferi buffer Frequency+   return $ BufferData (MemoryRegion  raw size) (makeFormat channels bits) frequency++setBufferData :: Buffer -> BufferData a -> IO ()+setBufferData buffer (BufferData (MemoryRegion raw size) format frequency) =+      alBufferData buffer (marshalFormat format) raw size (round frequency)++foreign import CALLCONV unsafe "alBufferData"+   alBufferData :: Buffer -> ALenum -> Ptr a -> ALsizei -> ALsizei -> IO ()++--------------------------------------------------------------------------------++-- ToDo: What about IMAADPCMMono16, IMAADPCMStereo16, Vorbis...?+makeFormat :: ALint -> ALint -> Format+makeFormat 1  8 = Mono8+makeFormat 2  8 = Stereo8+makeFormat 1 16 = Mono16+makeFormat 2 16 = Stereo16+makeFormat channels bits =+   error ("makeFormat: illegal values " ++ show (channels, bits))++--------------------------------------------------------------------------------++data BufferQuery =+     Frequency+   | Size+   | Bits+   | Channels++marshalBufferQuery :: BufferQuery -> ALenum+marshalBufferQuery x = case x of+   Frequency -> al_FREQUENCY+   Size -> al_SIZE+   Bits -> al_BITS+   Channels -> al_CHANNELS++--------------------------------------------------------------------------------++getBufferi :: Num a => Buffer -> BufferQuery -> IO a+getBufferi buffer query =+   alloca $ \buf -> do+      alGetBufferi buffer (marshalBufferQuery query) buf+      peek1 fromIntegral buf++foreign import CALLCONV unsafe "alGetBufferi"+   alGetBufferi :: Buffer -> ALenum -> Ptr ALint -> IO ()
+ Sound/OpenAL/AL/BufferInternal.hs view
@@ -0,0 +1,75 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.BufferInternal+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This is a purely internal module for (un-)marshaling Buffer.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.BufferInternal (+   Buffer, marshalBuffer, unmarshalBuffer+) where++import Foreign.Marshal.Array ( withArrayLen, peekArray, allocaArray )+import Foreign.Ptr ( Ptr, castPtr )+import Foreign.Storable ( Storable(..) )+import Graphics.Rendering.OpenGL.GL.BufferObjects ( ObjectName(..) )+import Sound.OpenAL.AL.ALboolean ( unmarshalALboolean )+import Sound.OpenAL.AL.BasicTypes ( ALboolean, ALuint, ALsizei )+import Sound.OpenAL.AL.PeekPoke ( peek1, poke1 )++--------------------------------------------------------------------------------++-- | The abstract buffer type.++newtype Buffer = Buffer { bufferID :: ALuint }+   deriving ( Eq, Ord, Show )+ +-- | A dummy buffer.++nullBuffer :: Buffer+nullBuffer = Buffer 0++marshalBuffer :: Maybe Buffer -> ALuint+marshalBuffer = bufferID . maybe nullBuffer id++unmarshalBuffer :: ALuint -> Maybe Buffer+unmarshalBuffer b =+   if b == bufferID nullBuffer then Nothing else Just (Buffer b)++instance Storable Buffer where+   sizeOf    ~(Buffer b) = sizeOf b+   alignment ~(Buffer b) = alignment b+   peek                  = peek1 Buffer . castPtr+   poke ptr   (Buffer b) = poke1 (castPtr ptr) b++--------------------------------------------------------------------------------+-- This should really be in Sound.OpenAL.AL.Buffer, but we have it here to+-- avoid an orphan module.++instance ObjectName Buffer where+   genObjectNames n =+      allocaArray n $ \buf -> do+        alGenBuffers (fromIntegral n) buf+        peekArray n buf++   deleteObjectNames buffers =+      withArrayLen buffers $ alDeleteBuffers . fromIntegral++   isObjectName = fmap unmarshalALboolean . alIsBuffer++foreign import CALLCONV unsafe "alGenBuffers"+   alGenBuffers :: ALsizei -> Ptr Buffer -> IO ()++foreign import CALLCONV unsafe "alDeleteBuffers"+   alDeleteBuffers :: ALsizei -> Ptr Buffer -> IO ()++foreign import CALLCONV unsafe "alIsBuffer"+   alIsBuffer :: Buffer -> IO ALboolean
+ Sound/OpenAL/AL/Doppler.hs view
@@ -0,0 +1,92 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Doppler+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 3.5.2. (Velocity Dependent Doppler Effect)+-- of the OpenAL Specification and Reference (version 1.1).+-- +--------------------------------------------------------------------------------++module Sound.OpenAL.AL.Doppler (+   -- * Introduction+   -- $Introduction+   dopplerFactor, speedOfSound+) where++import Foreign.Ptr ( FunPtr )+import Graphics.Rendering.OpenGL.GL.StateVar (+   HasGetter(get), StateVar, makeStateVar )+import Sound.OpenAL.AL.BasicTypes ( ALenum, ALfloat )+import Sound.OpenAL.AL.Extensions ( alProcAddress )+import Sound.OpenAL.AL.QueryUtils (+   GetPName(GetDopplerFactor,GetSpeedOfSound), marshalGetPName )++#ifdef __HADDOCK__+import Sound.OpenAL.AL.Errors ( ALError(ALInvalidValue) )+#endif++--------------------------------------------------------------------------------++-- | 'dopplerFactor' is a simple scaling of source and listener velocities to+-- exaggerate or deemphasize the Doppler (pitch) shift resulting from the+-- calculation. Setting 'dopplerFactor' to a negative value will result in an+-- 'ALInvalidValue' error, the command is then ignored. The default value is 1.+-- The implementation is free to optimize the case of 'dopplerFactor' containing+-- zero, as this effectively disables the effect.++dopplerFactor :: StateVar ALfloat+dopplerFactor = makeDopplerVar GetDopplerFactor "alDopplerFactor"++--------------------------------------------------------------------------------++-- | 'speedOfSound' allows the application to change the reference (propagation)+-- speed used in the Doppler calculation. The source and listener velocities+-- should be expressed in the same units as the speed of sound. Setting+-- 'speedOfSound' to a negative or zero value will result in an 'ALInvalidValue'+-- error, the command is ignored then. The default value is 343.3 (appropriate+-- for velocity units of meters and air as the propagation medium).++speedOfSound :: StateVar ALfloat+speedOfSound = makeDopplerVar GetSpeedOfSound "alSpeedOfSound"++--------------------------------------------------------------------------------++makeDopplerVar :: GetPName -> String -> StateVar ALfloat+makeDopplerVar p apiEntryName =+   makeStateVar+      (alGetFloat (marshalGetPName p))+      (\value -> do+         -- ToDo: Should we check alcVersion or alIsExtensionPresent here?+         funPtr <- get (alProcAddress apiEntryName)+         invokeWithFloat funPtr value)++foreign import CALLCONV unsafe "alGetFloat"+   alGetFloat :: ALenum -> IO ALfloat++type Invoker a = FunPtr a -> a++foreign import CALLCONV unsafe "dynamic"+   invokeWithFloat :: Invoker (ALfloat -> IO ()) ++--------------------------------------------------------------------------------+-- $Introduction+-- The Doppler Effect depends on the velocities of source and listener relative+-- to the medium, and the propagation speed of sound in that medium.  The+-- application might want to emphasize or de-emphasize the Doppler Effect as+-- physically accurate calculation might not give the desired results.+-- The amount of frequency shift (pitch change) is proportional to the speed of+-- listener and source along their line of sight.+-- +-- The Doppler Effect as implemented by OpenAL is described in detail in section+-- 3.5.2 of the OpenAL 1.1 specification. Note that effects of the medium (air,+-- water) moving with respect to listener and source are ignored. There are two+-- API calls global to the current context that provide control of the Doppler+-- factor and the speed of sound. Distance and velocity units are completely+-- independent of one another (so you could use different units for each if+-- desired).
+ Sound/OpenAL/AL/Errors.hs view
@@ -0,0 +1,88 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Errors+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 2.7 (AL Errors) of the OpenAL+-- Specification and Reference (version 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.Errors (+   ALError(..), ALErrorCategory(..), alErrors+) where++import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar )+import Sound.OpenAL.AL.BasicTypes ( ALenum )+import Sound.OpenAL.Constants (+   al_NO_ERROR, al_INVALID_NAME, al_INVALID_ENUM, al_INVALID_VALUE,+   al_INVALID_OPERATION, al_OUT_OF_MEMORY )+import Sound.OpenAL.AL.QueryUtils ( StringName(..), getString )++--------------------------------------------------------------------------------++-- | AL errors consist of a general error category and a description of what+-- went wrong.++data ALError = ALError ALErrorCategory String+   deriving ( Eq, Ord, Show )++--------------------------------------------------------------------------------++-- | General AL error categories.++data ALErrorCategory =+     ALInvalidEnum+   | ALInvalidValue+   | ALInvalidOperation+   | ALInvalidName+   | ALOutOfMemory+   deriving ( Eq, Ord, Show )++unmarshalALErrorCategory :: ALenum -> ALErrorCategory+unmarshalALErrorCategory x+   | x == al_INVALID_ENUM = ALInvalidEnum+   | x == al_INVALID_VALUE = ALInvalidValue+   | x == al_INVALID_OPERATION = ALInvalidOperation+   | x == al_INVALID_NAME = ALInvalidName+   | x == al_OUT_OF_MEMORY = ALOutOfMemory+   | otherwise = error ("unmarshalALErrorCategory: illegal value " ++ show x)++--------------------------------------------------------------------------------++-- | OpenAL detects only a subset of those conditions that could be considered+-- errors. This is because in many cases error checking would adversely impact+-- the performance of an error-free program. The state variable 'alErrors' is+-- used to obtain error information. When an error is detected by AL, a flag is+-- set and the error code is recorded. Further errors, if they occur, do not+-- affect this recorded code. When 'alErrors' is read, the error is returned and+-- the flag is cleared, so that a further error will again record its code. If+-- reading 'alErrors' returns @\[\]@ then there has been no detectable error+-- since the last time 'alErrors' (or since the AL was initialized).+--+-- When an error flag is set, results of AL operations are undefined only if+-- 'ALOutOfMemory' has occurred. In other cases, the command generating the+-- error is ignored so that it has no effect on AL state or output buffer+-- contents. If the error generating command returns a value, it returns zero.+-- If the generating command modifies values through a pointer argument, no+-- change is made to these values. These error semantics apply only to AL+-- errors, not to system errors such as memory access errors.++alErrors :: GettableStateVar [ALError]+alErrors =+   makeGettableStateVar $ do+      c <- alGetError+      if c == al_NO_ERROR+         then return []+         else do+            s <- getString (ALErrorCategory c)+            return [ ALError (unmarshalALErrorCategory c) s ]++foreign import CALLCONV unsafe "alGetError"+   alGetError :: IO ALenum
+ Sound/OpenAL/AL/Extensions.hs view
@@ -0,0 +1,102 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Extensions+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 3.1.2 (String Queries) and chapter 7+-- (Appendix: Extensions) of the OpenAL Specification and Reference (version+-- 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.Extensions (+   alExtensions, alIsExtensionPresent, alProcAddress, alEnumValue, alVersion+) where++import Foreign.Ptr ( Ptr, FunPtr )+import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar )+import Sound.OpenAL.AL.ALboolean ( unmarshalALboolean )+import Sound.OpenAL.AL.BasicTypes ( ALboolean, ALchar, ALenum )+import Sound.OpenAL.AL.QueryUtils ( StringName(..), getString )+import Sound.OpenAL.AL.String ( withALString )++#ifdef __HADDOCK__+import Foreign.Ptr ( nullFunPtr )+#endif++--------------------------------------------------------------------------------++-- | Contains the list of available extensions.++alExtensions :: GettableStateVar [String]+alExtensions = makeGettableStateVar (fmap words $ getString Extensions)++--------------------------------------------------------------------------------++-- | Contains a version string in the format @\"/\<spec major number\>/./\<spec+-- minor number\>/ /\<optional vendor version information\>/\"@.++alVersion :: GettableStateVar String+alVersion = makeGettableStateVar (getString Version)++--------------------------------------------------------------------------------++-- | To verify that a given extension is available for the current context, use+-- 'alIsExtensionPresent'. For invalid and unsupported string tokens it contains+-- 'False'. The extension name is not case sensitive: The implementation will+-- convert the name to all upper-case internally (and will express extension+-- names in upper-case).++alIsExtensionPresent :: String -> GettableStateVar Bool+alIsExtensionPresent extensionName =+   makeGettableStateVar $+      fmap unmarshalALboolean $+         withALString extensionName alIsExtensionPresent_++foreign import CALLCONV unsafe "alIsExtensionPresent"+   alIsExtensionPresent_ :: Ptr ALchar -> IO ALboolean++--------------------------------------------------------------------------------++-- | To retrieving function entry addresses, applications can use+-- 'alProcAddress'. It contains 'nullFunPtr' if no entry point with the given+-- name can be found. Implementations are free to use 'nullFunPtr' if an+-- entry point is present, but not applicable for the current context. However+-- the specification does not guarantee this behavior. Applications can use+-- 'alProcAddress' to obtain core API entry points, not just extensions. This+-- is the recommended way to dynamically load and unload OpenAL DLLs as sound+-- drivers.++alProcAddress :: String -> GettableStateVar (FunPtr a)+alProcAddress funcName = makeGettableStateVar $+   withALString funcName alGetProcAddress++foreign import CALLCONV unsafe "alGetProcAddress"+   alGetProcAddress :: Ptr ALchar -> IO (FunPtr a)++--------------------------------------------------------------------------------++-- | To obtain enumeration values for extensions, the application has to use+-- 'alEnumValue' of an extension token. Enumeration values are defined within+-- the OpenAL name space and allocated according to specification of the core+-- API and the extensions, thus they are context-independent.+--+-- 'alEnumValue' contains 0 if the enumeration can not be found. The presence of+-- an enum value does not guarantee the applicability of an extension to the+-- current context. A non-zero value indicates merely that the implementation is+-- aware of the existence of this extension. Implementations should not attempt+-- to use 0 to indicate that the extensions is not supported for the current+-- context.++alEnumValue :: String -> GettableStateVar ALenum+alEnumValue enumName = makeGettableStateVar $+   withALString enumName alGetEnumValue++foreign import CALLCONV unsafe "alGetEnumValue"+   alGetEnumValue :: Ptr ALchar -> IO ALenum
+ Sound/OpenAL/AL/Format.hs view
@@ -0,0 +1,50 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Format+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This is a purely internal module for (un-)marshaling Format.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.Format (+   Format(..), marshalFormat, unmarshalFormat+) where++import Sound.OpenAL.AL.BasicTypes ( ALenum )+import Sound.OpenAL.Constants (+   al_FORMAT_MONO8, al_FORMAT_MONO16, al_FORMAT_STEREO8, al_FORMAT_STEREO16 )++--------------------------------------------------------------------------------++-- | Valid sound formats. An implementation may expose other formats, see+-- "Sound.OpenAL.ALC.Extensions" for information on determining if additional+-- formats are supported.++data Format =+     Mono8+   | Mono16+   | Stereo8+   | Stereo16+   deriving ( Eq, Ord, Show )++marshalFormat :: Format -> ALenum+marshalFormat x = case x of+   Mono8 -> al_FORMAT_MONO8+   Mono16 -> al_FORMAT_MONO16+   Stereo8 -> al_FORMAT_STEREO8+   Stereo16 -> al_FORMAT_STEREO16++unmarshalFormat :: ALenum -> Format+unmarshalFormat x+   | x == al_FORMAT_MONO8 = Mono8+   | x == al_FORMAT_MONO16 = Mono16+   | x == al_FORMAT_STEREO8 = Stereo8+   | x == al_FORMAT_STEREO16 = Stereo16+   | otherwise = error ("unmarshalFormat: illegal value " ++ show x)
+ Sound/OpenAL/AL/Listener.hs view
@@ -0,0 +1,150 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Listener+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to sections 4.1 (Basic Listener and Source+-- Attributes) and 4.2 (Listener Object) of the OpenAL Specification and+-- Reference (version 1.1).+-- +-- The listener object defines various properties that affect processing of the+-- sound for the actual output. The listener is unique for an OpenAL Context,+-- and has no name. By controlling the listener, the application controls the+-- way the user experiences the virtual world, as the listener defines the+-- sampling\/pickup point and orientation, and other parameters that affect the+-- output stream.+-- +-- It is entirely up to the driver and hardware configuration, i.e. the+-- installation of OpenAL as part of the operating system and hardware setup,+-- whether the output stream is generated for headphones or 2 speakers, 4.1+-- speakers, or other arrangements, whether (and which) HRTFs are applied,+-- etc...+--+---------------------------------------------------------------------------------++module Sound.OpenAL.AL.Listener (+   listenerPosition, listenerVelocity, Gain, listenerGain, orientation+) where++import Foreign.Marshal.Array ( allocaArray, withArray )+import Foreign.Marshal.Utils ( with )+import Foreign.Ptr ( Ptr )+import Foreign.Storable ( Storable )+import Graphics.Rendering.OpenGL.GL.CoordTrans ( Vector3(..) )+import Graphics.Rendering.OpenGL.GL.VertexSpec ( Vertex3(..) )+import Graphics.Rendering.OpenGL.GL.StateVar ( StateVar, makeStateVar )+import Sound.OpenAL.AL.BasicTypes ( ALenum, ALfloat )+import Sound.OpenAL.AL.PeekPoke ( peek1, peek3, peek6 )+import Sound.OpenAL.AL.QueryUtils (+   GetPName(GetPosition,GetVelocity,GetGain,GetOrientation), marshalGetPName )++--------------------------------------------------------------------------------++-- | 'listenerPosition' contains the current location of the listener in the+-- world coordinate system. Any 3-tuple of valid float values is allowed.+-- Implementation behavior on encountering NaN and infinity is not defined. The+-- initial position is ('Vertex3' 0 0 0).++listenerPosition :: StateVar (Vertex3 ALfloat)+listenerPosition = makeListenerVar GetPosition 3 (peek3 Vertex3) listener3f++--------------------------------------------------------------------------------++-- | 'listenerVelocity' contains current velocity (speed and direction) of the+-- listener in the world coordinate system. Any 3-tuple of valid float+-- values is allowed, and the initial velocity is ('Vector3' 0 0 0).+-- 'listenerVelocity' does not affect 'listenerPosition'. OpenAL does not+-- calculate the velocity from subsequent position updates, nor does it+-- adjust the position over time based on the specified velocity. Any+-- such calculation is left to the application. For the purposes of sound+-- processing, position and velocity are independent parameters affecting+-- different aspects of the sounds.+--+-- 'listenerVelocity' is taken into account by the driver to synthesize the+-- Doppler effect perceived by the listener for each source, based on the+-- velocity of both source and listener, and the Doppler related parameters.++listenerVelocity :: StateVar (Vector3 ALfloat)+listenerVelocity = makeListenerVar GetVelocity 3 (peek3 Vector3) listener3f++--------------------------------------------------------------------------------++-- | A scalar amplitude multiplier.+type Gain = ALfloat++-- | 'listenerGain' contains a scalar amplitude multiplier, which is effectively+-- applied to all sources in the current context. The initial value 1 means+-- that the sound is unattenuated. A 'listenerGain' value of 0.5 is equivalent+-- to an attenuation of 6dB. The value zero equals silence (no output). Driver+-- implementations are free to optimize this case and skip mixing and processing+-- stages where applicable. The implementation is in charge of ensuring+-- artifact-free (click-free) changes of gain values and is free to defer actual+-- modification of the sound samples, within the limits of acceptable latencies.+--+-- A 'listenerGain' larger than 1 (amplification) is permitted. However, the+-- implementation is free to clamp the total gain (effective gain per source+-- times listener gain) to 1 to prevent overflow.++listenerGain :: StateVar Gain+listenerGain = makeListenerVar GetGain 1 (peek1 id) listenerf++--------------------------------------------------------------------------------++-- | 'orientation' contains an \"at\" vector and an \"up\" vector, where the+-- \"at\" vector represents the \"forward\" direction of the listener and the+-- orthogonal projection of the \"up\" vector into the subspace perpendicular to+-- the \"at\" vector represents the \"up\" direction for the listener. OpenAL+-- expects two vectors that are linearly independent. These vectors are not+-- expected to be normalized. If the two vectors are linearly dependent,+-- behavior is undefined. The initial orientation is ('Vector3' 0 0 (-1),+-- 'Vector3' 0 1 0), i.e. looking down the Z axis with the Y axis pointing+-- upwards.++orientation :: StateVar (Vector3 ALfloat, Vector3 ALfloat)+orientation = makeListenerVar GetOrientation 6 (peek6 Vector3) listenerVector6++--------------------------------------------------------------------------------++listenerf :: GetPName -> ALfloat -> IO ()+listenerf = alListenerf . marshalGetPName++foreign import CALLCONV unsafe "alListenerf"+   alListenerf :: ALenum -> ALfloat -> IO ()++--------------------------------------------------------------------------------++listener3f :: Storable a => GetPName -> a -> IO ()+listener3f n x = with x $ listenerfv n++listenerVector6 :: GetPName -> (Vector3 ALfloat, Vector3 ALfloat) -> IO ()+listenerVector6 n (x, y) = withArray [x, y] $ listenerfv n++listenerfv :: GetPName -> Ptr a -> IO ()+listenerfv = alListenerfv . marshalGetPName++foreign import CALLCONV unsafe "alListenerfv"+   alListenerfv :: ALenum -> Ptr a -> IO ()++--------------------------------------------------------------------------------++getListenerfv :: GetPName -> Ptr ALfloat -> IO ()+getListenerfv = alGetListenerfv . marshalGetPName++foreign import CALLCONV unsafe "alGetListenerfv"+   alGetListenerfv :: ALenum -> Ptr ALfloat -> IO ()++--------------------------------------------------------------------------------++makeListenerVar :: GetPName -> Int -> (Ptr ALfloat -> IO a)+                -> (GetPName -> a -> IO ()) -> StateVar a+makeListenerVar pname size reader writer =+   makeStateVar+      (allocaArray size $ \buf -> do+          getListenerfv pname buf+          reader buf)+      (writer pname)
+ Sound/OpenAL/AL/PeekPoke.hs view
@@ -0,0 +1,59 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.PeekPoke+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenGL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This is a purely internal module with peek- and poke-related utilities.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.PeekPoke (+   poke1, peek1, peek3, peek6+) where++import Foreign.Ptr ( Ptr )+import Foreign.Storable ( Storable(peekElemOff,pokeElemOff) )++--------------------------------------------------------------------------------+-- The implementation is little bit verbose/redundant, but seems to generate+-- better code than mapM/zipWithM_.++--------------------------------------------------------------------------------++{-# INLINE poke1 #-}+poke1 :: Storable a => Ptr a -> a -> IO ()+poke1 ptr x =+   pokeElemOff ptr 0 x++--------------------------------------------------------------------------------++{-# INLINE peek1 #-}+peek1 :: Storable a => (a -> b) -> Ptr a -> IO b+peek1 f ptr = do+   x <- peekElemOff ptr 0+   return $ f x++{-# INLINE peek3 #-}+peek3 :: Storable a => (a -> a -> a -> b) -> Ptr a -> IO b+peek3 f ptr = do+   x <- peekElemOff ptr 0+   y <- peekElemOff ptr 1+   z <- peekElemOff ptr 2+   return $ f x y z++{-# INLINE peek6 #-}+peek6 :: Storable a => (a -> a -> a -> b) -> Ptr a -> IO (b, b)+peek6 f ptr = do+   x <- peekElemOff ptr 0+   y <- peekElemOff ptr 1+   z <- peekElemOff ptr 2+   u <- peekElemOff ptr 3+   v <- peekElemOff ptr 4+   w <- peekElemOff ptr 5+   return $ (f x y z, f u v w)
+ Sound/OpenAL/AL/QueryUtils.hs view
@@ -0,0 +1,122 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.QueryUtils+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenGL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This is a purely internal module with utilities to query OpenAL state.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.QueryUtils (+   GetPName(..), marshalGetPName,+   StringName(..), getString+) where++import Foreign.Ptr ( Ptr )+import Sound.OpenAL.AL.BasicTypes ( ALchar, ALenum )+import Sound.OpenAL.AL.String ( peekALString )+import Sound.OpenAL.Constants (+   al_DISTANCE_MODEL, al_DOPPLER_FACTOR, al_SPEED_OF_SOUND, al_POSITION,+   al_VELOCITY, al_GAIN, al_ORIENTATION, al_SOURCE_RELATIVE, al_SOURCE_TYPE,+   al_LOOPING, al_BUFFER, al_BUFFERS_QUEUED, al_BUFFERS_PROCESSED, al_MIN_GAIN,+   al_MAX_GAIN, al_REFERENCE_DISTANCE, al_ROLLOFF_FACTOR, al_MAX_DISTANCE,+   al_PITCH, al_DIRECTION, al_CONE_INNER_ANGLE, al_CONE_OUTER_ANGLE,+   al_CONE_OUTER_GAIN, al_SEC_OFFSET, al_SAMPLE_OFFSET, al_BYTE_OFFSET,+   al_SOURCE_STATE, al_VENDOR, al_RENDERER, al_VERSION, al_EXTENSIONS )++--------------------------------------------------------------------------------++data GetPName =+     GetDistanceModel+   | GetDopplerFactor+   | GetSpeedOfSound++   | GetPosition++   | GetVelocity+   | GetGain++   | GetOrientation++   | GetSourceRelative+   | GetSourceType+   | GetLooping+   | GetBuffer+   | GetBuffersQueued+   | GetBuffersProcessed+   | GetMinGain+   | GetMaxGain+   | GetReferenceDistance+   | GetRolloffFactor+   | GetMaxDistance+   | GetPitch+   | GetDirection+   | GetConeInnerAngle+   | GetConeOuterAngle+   | GetConeOuterGain+   | GetSecOffset+   | GetSampleOffset+   | GetByteOffset+   | GetSourceState++marshalGetPName :: GetPName -> ALenum+marshalGetPName x = case x of+   GetDistanceModel -> al_DISTANCE_MODEL+   GetDopplerFactor -> al_DOPPLER_FACTOR+   GetSpeedOfSound -> al_SPEED_OF_SOUND++   GetPosition -> al_POSITION+   GetVelocity -> al_VELOCITY+   GetGain -> al_GAIN++   GetOrientation -> al_ORIENTATION++   GetSourceRelative -> al_SOURCE_RELATIVE+   GetSourceType -> al_SOURCE_TYPE+   GetLooping -> al_LOOPING+   GetBuffer -> al_BUFFER+   GetBuffersQueued -> al_BUFFERS_QUEUED+   GetBuffersProcessed -> al_BUFFERS_PROCESSED+   GetMinGain -> al_MIN_GAIN+   GetMaxGain -> al_MAX_GAIN+   GetReferenceDistance -> al_REFERENCE_DISTANCE+   GetRolloffFactor -> al_ROLLOFF_FACTOR+   GetMaxDistance -> al_MAX_DISTANCE+   GetPitch -> al_PITCH+   GetDirection -> al_DIRECTION+   GetConeInnerAngle -> al_CONE_INNER_ANGLE+   GetConeOuterAngle -> al_CONE_OUTER_ANGLE+   GetConeOuterGain -> al_CONE_OUTER_GAIN+   GetSecOffset -> al_SEC_OFFSET+   GetSampleOffset -> al_SAMPLE_OFFSET+   GetByteOffset -> al_BYTE_OFFSET+   GetSourceState -> al_SOURCE_STATE++--------------------------------------------------------------------------------++data StringName =+     Vendor+   | Renderer+   | Version+   | Extensions+   | ALErrorCategory ALenum++marshalStringName :: StringName -> ALenum+marshalStringName x = case x of+   Vendor -> al_VENDOR+   Renderer -> al_RENDERER+   Version -> al_VERSION+   Extensions -> al_EXTENSIONS+   ALErrorCategory e -> e++getString :: StringName -> IO String+getString n = alGetString (marshalStringName n) >>= peekALString ++foreign import CALLCONV unsafe "alGetString"+   alGetString :: ALenum -> IO (Ptr ALchar)
+ Sound/OpenAL/AL/Source.hs view
@@ -0,0 +1,775 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.Source+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to sections 4.1 (Basic Listener and Source+-- Attributes) and 4.3 (Source Objects) of the OpenAL Specification and+-- Reference (version 1.1).+--+-- Sources specify attributes like position, velocity, and a buffer with sample+-- data. By controlling a source\'s attributes the application can modify and+-- parameterize the static sample data provided by the buffer referenced by the+-- source. Sources define a localized sound, and encapsulate a set of attributes+-- applied to a sound at its origin, i.e. in the very first stage of the+-- processing on the way to the listener. Source related effects have to be+-- applied before listener related effects unless the output is invariant to any+-- collapse or reversal of order. OpenAL also provides additional functions to+-- manipulate and query the execution state of sources: the current playing+-- status of a source, including access to the current sampling position within+-- the associated buffer.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.Source (+   -- * The Source Type+   Source,++   -- * Source Attributes++   -- ** Basic Source Attributes+   sourcePosition, sourceVelocity, sourceGain,++   -- ** Source Positioning+   SourceRelative(..), sourceRelative,++   -- ** Source Type+   SourceType(..), sourceType,++   -- ** Buffer Looping+   LoopingMode(..), loopingMode,++   -- ** Current Buffer+   buffer,++   -- ** Queue State Queries+   buffersQueued, buffersProcessed,++   -- ** Bounds on Gain+   gainBounds,++   -- ** Distance Model Attributes+   referenceDistance, rolloffFactor, maxDistance,++   -- ** Frequency Shift by Pitch+   pitch,++   -- ** Direction and Cone+   -- $DirectionAndCone+   direction, coneAngles, coneOuterGain,++   -- ** Offset+   secOffset, sampleOffset, byteOffset,++   -- * Queuing Buffers with a Source+   -- $QueuingBuffersWithASource+   queueBuffers, unqueueBuffers,++   -- * Managing Source Execution+   -- $ManagingSourceExecution+   SourceState(..), sourceState, play, pause, stop, rewind+) where++import Control.Monad ( liftM2 )+import Foreign.Marshal.Array ( withArrayLen, peekArray, allocaArray )+import Foreign.Marshal.Utils ( with )+import Foreign.Ptr ( Ptr, castPtr )+import Foreign.Storable ( Storable(..) )+import Graphics.Rendering.OpenGL.GL.BufferObjects ( ObjectName(..) )+import Graphics.Rendering.OpenGL.GL.CoordTrans ( Vector3(..) )+import Graphics.Rendering.OpenGL.GL.VertexSpec ( Vertex3(..) )+import Graphics.Rendering.OpenGL.GL.StateVar (+   HasGetter(get), HasSetter(($=)), makeStateVar, StateVar, GettableStateVar,+   makeGettableStateVar )+import Sound.OpenAL.AL.ALboolean ( marshalALboolean, unmarshalALboolean )+import Sound.OpenAL.AL.BasicTypes+import Sound.OpenAL.AL.Buffer ( Buffer )+import Sound.OpenAL.AL.BufferInternal ( marshalBuffer, unmarshalBuffer )+import Sound.OpenAL.AL.Listener ( Gain )+import Sound.OpenAL.AL.PeekPoke ( peek1, poke1, peek3 )+import Sound.OpenAL.AL.SourceState ( SourceState(..), unmarshalSourceState )+import Sound.OpenAL.AL.QueryUtils (+   GetPName(GetPosition,GetVelocity,GetGain,GetSourceRelative,GetSourceType,+            GetLooping,GetBuffer,GetBuffersQueued,GetBuffersProcessed,+            GetMinGain,GetMaxGain,GetReferenceDistance,GetRolloffFactor,+            GetMaxDistance,GetPitch,GetDirection,GetConeInnerAngle,+            GetConeOuterAngle,GetConeOuterGain,GetSecOffset,GetSampleOffset,+            GetByteOffset,GetSourceState),+   marshalGetPName )+import Sound.OpenAL.Constants ( al_UNDETERMINED, al_STATIC, al_STREAMING )++#ifdef __HADDOCK__+import Sound.OpenAL.AL.Listener ( listenerGain )+import Sound.OpenAL.AL.Errors ( ALErrorCategory(..) )+#endif++--------------------------------------------------------------------------------++-- | The abstract buffer type.++newtype Source = Source ALuint+   deriving ( Eq, Ord, Show )++instance Storable Source where+   sizeOf    ~(Source b) = sizeOf b+   alignment ~(Source b) = alignment b+   peek                  = peek1 Source . castPtr+   poke ptr   (Source b) = poke1 (castPtr ptr) b++instance ObjectName Source where+   genObjectNames n =+      allocaArray n $ \buf -> do+         alGenSources (fromIntegral n) buf+         peekArray n buf++   deleteObjectNames = withArraySizei alDeleteSources++   isObjectName = fmap unmarshalALboolean . alIsSource++foreign import CALLCONV unsafe "alGenSources"+   alGenSources :: ALsizei -> Ptr Source -> IO ()++foreign import CALLCONV unsafe "alDeleteSources"+   alDeleteSources :: ALsizei -> Ptr Source -> IO ()++foreign import CALLCONV unsafe "alIsSource"+   alIsSource :: Source -> IO ALboolean++--------------------------------------------------------------------------------++-- | 'sourcePosition' contains the current location of the source in the world+-- coordinate system. Any 3-tuple of valid float values is allowed.+-- Implementation behavior on encountering NaN and infinity is not defined. The+-- initial position is ('Vertex3' 0 0 0).++sourcePosition :: Source -> StateVar (Vertex3 ALfloat)+sourcePosition = makeSourceStateVar dictVertex3ALfloat GetPosition++-- | 'sourceVelocity' contains current velocity (speed and direction) of the+-- source in the world coordinate system. Any 3-tuple of valid float values is+-- allowed, and the initial velocity is ('Vector3' 0 0 0). 'sourceVelocity' does+-- not affect 'sourcePosition'. OpenAL does not calculate the velocity from+-- subsequent position updates, nor does it adjust the position over time based+-- on the specified velocity. Any such calculation is left to the application.+-- For the purposes of sound processing, position and velocity are independent+-- parameters affecting different aspects of the sounds.+--+-- 'sourceVelocity' is taken into account by the driver to synthesize the+-- Doppler effect perceived by the listener for each source, based on the+-- velocity of both source and listener, and the Doppler related parameters.++sourceVelocity :: Source -> StateVar (Vector3 ALfloat)+sourceVelocity = makeSourceStateVar dictVector3ALfloat GetVelocity++-- | 'sourceGain' contains a scalar amplitude multiplier for the given source.+-- The initial value 1 means that the sound is unattenuated. A 'sourceGain'+-- value of 0.5 is equivalent to an attenuation of 6dB. The value zero equals+-- silence (no output). Driver implementations are free to optimize this case+-- and skip mixing and processing stages where applicable. The implementation is+-- in charge of ensuring artifact-free (click-free) changes of gain values and+-- is free to defer actual modification of the sound samples, within the limits+-- of acceptable latencies.+--+-- A 'sourceGain' larger than 1 (amplification) is permitted. However, the+-- implementation is free to clamp the total gain (effective gain per source+-- times listener gain) to 1 to prevent overflow.++sourceGain :: Source -> StateVar Gain+sourceGain = makeSourceStateVar dictALfloat GetGain++--------------------------------------------------------------------------------++-- | The entity to which the source attributes 'sourcePosition',+-- 'sourceVelocity' and 'direction' are to be interpreted.++data SourceRelative =+     World+   | Listener+   deriving ( Eq, Ord, Show )++marshalSourceRelative :: SourceRelative -> Bool+marshalSourceRelative = (== Listener)++unmarshalSourceRelative :: Bool -> SourceRelative+unmarshalSourceRelative x = if x then Listener else World++-- | If 'sourceRelative' contains 'Listener', it indicates indicates that the+-- values specified by 'sourcePosition', 'sourceVelocity' and 'direction' are to+-- be interpreted relative to the listener position. The initial value is+-- 'World', indicating that those source attributes are to be interpreted+-- relative to the world, i.e. they are considered absolute.++sourceRelative :: Source -> StateVar SourceRelative+sourceRelative = makeSourceStateVar dictSourceRelative GetSourceRelative++--------------------------------------------------------------------------------++-- | When first created, a source will be in the 'Undetermined' state. If a+-- buffer is then attached using 'buffer', then the source will enter the+-- 'Static' state. If the first buffer attached to a source is attached using+-- 'queueBuffers', then the source will enter the 'Streaming' state. A source of+-- either state will be reset to state 'Undetermined' by setting its 'buffer' to+-- 'Nothing', and attaching any buffer to a streaming source will change the+-- state to 'Static'. Attempting to queue a buffer on a static source will+-- result in an 'ALInvalidOperation' error.++data SourceType =+     Undetermined+   | Static+   | Streaming+   deriving ( Eq, Ord, Show )++unmarshalSourceType :: ALint -> SourceType+unmarshalSourceType x+   | x == al_UNDETERMINED = Undetermined+   | x == al_STATIC = Static+   | x == al_STREAMING = Streaming+   | otherwise = error ("unmarshalSourceType: illegal value " ++ show x)++-- | 'sourceType' indicates whether a source is ready to queue buffers, ready to+-- use a static buffer, or is in an undetermined state where it can be used for+-- either streaming or static playback.++sourceType :: Source -> GettableStateVar SourceType+sourceType = makeSourceGettableStateVar dictSourceType GetSourceType++--------------------------------------------------------------------------------++-- | Specifies what should happen when the end of a buffer queue is reached.++data LoopingMode =+     OneShot+   | Looping+   deriving ( Eq, Ord, Show )++marshalLoopingMode :: LoopingMode -> Bool+marshalLoopingMode = (== Looping)++unmarshalLoopingMode :: Bool -> LoopingMode+unmarshalLoopingMode x = if x then Looping else OneShot++-- | If 'loopingMode' contains 'Looping', it indicates that the source will not+-- be in the 'Stopped' state once it reaches the end of last buffer in the+-- buffer queue. Instead, the source will immediately promote to 'Initial' and+-- 'Playing'.  The initial value is 'OneShot'. 'loopingMode' can be changed on a+-- source in any execution state. In particular, it can be changed on a+-- 'Playing' source.++loopingMode :: Source -> StateVar LoopingMode+loopingMode = makeSourceStateVar dictLoopingMode GetLooping++--------------------------------------------------------------------------------++-- | 'buffer' contains the current buffer object. Setting 'buffer' to 'Just' a+-- buffer object makes it the head entry in the source\'s queue. Setting+-- 'buffer'for a source in the 'Stopped' or 'Initial' state empties the entire+-- queue, then appends the one buffer specified (or none at all if 'Nothing'+-- was specified).+-- +-- For a source in the 'Playing' or 'Paused' state, setting 'buffer' will result+-- in the 'ALInvalidOperation' error state being set. 'buffer' can be applied only+-- to sources in the 'Initial' and 'Stopped' states. Specifying an invalid+-- buffer name (either because the buffer name doesn\'t exist or because that+-- buffer can\'t be attached to the specified source) will result in an+-- 'ALInvalidValue' error while specifying an invalid source name results in an+-- 'ALInvalidName' error. Setting 'buffer' to 'Nothing' is a legal way to release+-- the current buffer queue on a source in the 'Initial' or 'Stopped' state,+-- whether the source has just one entry (current buffer) or more. Setting+-- 'buffer' to 'Nothing' still causes an 'ALInvalidOperation' for any source in+-- the 'Playing' or 'Paused' state, consequently it cannot be used to mute or+-- stop a source. The initial value is 'Nothing'.++buffer :: Source -> StateVar (Maybe Buffer)+buffer = makeSourceStateVar dictMaybeBuffer GetBuffer++--------------------------------------------------------------------------------++-- | 'buffersQueued' contains the number of buffers in the queue of a given+-- source. This includes those not yet played, the one currently playing, and+-- the ones that have been played already. It will contain 0 if 'buffer' has+-- been set to 'Nothing'.++buffersQueued :: Source -> GettableStateVar ALint+buffersQueued = makeSourceGettableStateVar dictALint GetBuffersQueued++-- | 'buffersProcessed' contains the number of buffers that have been played+-- by a given source.  Indirectly, this gives the index of the buffer currently+-- playing. It can be used to determine how much slots are needed for unqueuing+-- them. On a source in the 'Stopped' state, all buffers are processed. On a+-- source in the 'Initial' state, no buffers are processed, all buffers are+-- pending. It will contain 0 if 'buffer' has been set to 'Nothing'.++buffersProcessed :: Source -> GettableStateVar ALint+buffersProcessed = makeSourceGettableStateVar dictALint GetBuffersProcessed++--------------------------------------------------------------------------------++-- | 'gainBounds' contains two scalar amplitude thresholds between 0 and 1+-- (included): The minimum guaranteed gain for this source and the maximum gain+-- permitted, with initial values 0 and 1, respectively At the end of the+-- processing of various attenuation factors such as distance based attenuation+-- and 'sourceGain', the effective gain calculated is compared to these values:+--+-- If the effective gain is lower than the minimum gain, the minimum gain is+-- applied. This happens before the 'listenerGain' is applied. If a zero minimum+-- gain is set, then the effective gain will not be corrected.+--+-- If the effective gain is higher than the maximum gain, the maximum gain is+-- applied. This happens before the 'listenerGain' is applied. If the+-- 'listenerGain' times the maximum gain still exceeds the maximum gain the+-- implementation can handle, the implementation is free to clamp. If a zero+-- maximum gain is set, then the source is effectively muted. The implementation+-- is free to optimize for this situation, but no optimization is required or+-- recommended as setting 'sourceGain' to zero is the proper way to mute a+-- source.++gainBounds :: Source -> StateVar (Gain, Gain)+gainBounds source =+   pairStateVars+      (makeSourceStateVar dictALfloat GetMinGain source)+      (makeSourceStateVar dictALfloat GetMaxGain source)++--------------------------------------------------------------------------------++-- | 'referenceDistance' is used for distance attenuation calculations based on+-- inverse distance with rolloff. Depending on the distance model it will also+-- act as a distance threshold below which gain is clamped. See+-- "Sound.OpenAL.AL.Attenuation" for details. The initial value is 1.++referenceDistance :: Source -> StateVar ALfloat+referenceDistance = makeSourceStateVar dictALfloat GetReferenceDistance++-- | 'rolloffFactor' is used for distance attenuation calculations based on+-- inverse distance with rolloff. For distances smaller than 'maxDistance' (and,+-- depending on the distance model, larger than 'referenceDistance'), this will+-- scale the distance attenuation over the applicable range. See+-- "Sound.OpenAL.AL.Attenuation" for details how the attenuation is computed as+-- a function of the distance. The initial value is 1.+-- +-- In particular, 'rolloffFactor' can be set to zero for those sources that are+-- supposed to be exempt from distance attenuation. The implementation is+-- encouraged to optimize this case, bypassing distance attenuation calculation+-- entirely on a persource basis.++rolloffFactor :: Source -> StateVar ALfloat+rolloffFactor = makeSourceStateVar dictALfloat GetRolloffFactor++-- | 'maxDistance' is used for distance attenuation calculations based on+-- inverse distance with rolloff, if the inverse clamped distance model is+-- used. In this case, distances greater than 'maxDistance' will be clamped to+-- 'maxDistance'.  'maxDistance' based clamping is applied before minimum gain+-- clamping (see 'gainBounds'), so if the effective gain at 'maxDistance' is+-- larger than the minimum gain, the minimum gain will have no effect. No+-- culling is supported. The initial value is the largest representable+-- 'ALfloat'.++maxDistance :: Source -> StateVar ALfloat+maxDistance = makeSourceStateVar dictALfloat GetMaxDistance++--------------------------------------------------------------------------------++-- | 'pitch' contains the desired pitch shift, where 1 (the initial value)+-- equals identity. Each reduction by 50 percent equals a pitch shift of -12+-- semitones (one octave reduction). Each doubling equals a pitch shift of 12+-- semitones (one octave increase). Zero is not a legal value. Implementations+-- may clamp the actual output pitch range to any values subject to the+-- implementation's own limits.++pitch :: Source -> StateVar ALfloat+pitch = makeSourceStateVar dictALfloat GetPitch++--------------------------------------------------------------------------------+-- $DirectionAndCone+-- Each source can be directional, depending on the settings for 'coneAngles'.+-- There are three zones defined: the inner cone, the outside zone, and the+-- transitional zone in between. The angle-dependent gain for a directional+-- source is constant inside the inner cone, and changes over the transitional+-- zone to the value specified outside the outer cone. 'sourceGain' is applied+-- for the inner cone, with an application selectable 'coneOuterGain' factor to+-- define the gain in the outer zone. In the transitional zone+-- implementation-dependent interpolation between 'sourceGain' and 'sourceGain'+-- times 'coneOuterGain' is applied.++--------------------------------------------------------------------------------++-- | If 'direction' does not contain the zero vector ('Vector3' 0 0 0), the+-- source is directional. The sound emission is presumed to be symmetric around+-- the direction vector (cylinder symmetry). Sources are not oriented in full 3+-- degrees of freedom, only two angles are effectively needed.+--+-- The zero vector is the initial value, indicating that a source is not+-- directional. Specifying a non-zero vector will make the source directional.+-- Specifying a zero vector for a directional source will effectively mark it as+-- nondirectional.++direction :: Source -> StateVar (Vector3 ALfloat)+direction = makeSourceStateVar dictVector3ALfloat GetDirection++-- | 'coneAngles' contains the inner and outer angles of the sound cone, in+-- degrees. The default of 360 for the inner cone angle means that it covers the+-- entire world, which is equivalent to an omni-directional source. The default+-- of 360 for the outer cone angle means that it covers the entire world. If the+-- inner angle is also 360, then the zone for angle-dependent attenuation is+-- zero.++coneAngles :: Source -> StateVar (ALfloat, ALfloat)+coneAngles source =+   pairStateVars+      (makeSourceStateVar dictALfloat GetConeInnerAngle source)+      (makeSourceStateVar dictALfloat GetConeOuterAngle source)++-- | 'coneOuterGain' contains the factor with which 'sourceGain' is multiplied+-- to determine the effective gain outside the cone defined by the outer angle.+-- The effective gain applied outside the outer cone is 'sourceGain' times+-- 'coneOuterGain'. Changing 'sourceGain' affects all directions, i.e. the+-- source is attenuated in all directions, for any position of the listener. The+-- application has to change 'coneOuterGain' as well if a different behavior is+-- desired.++coneOuterGain :: Source -> StateVar Gain+coneOuterGain = makeSourceStateVar dictALfloat GetConeOuterGain++--------------------------------------------------------------------------------++-- | 'secOffset' contains the playback position, expressed in seconds (the value+-- will loop back to zero for looping sources).+--+-- When setting 'secOffset' on a source which is already playing, the playback+-- will jump to the new offset unless the new offset is out of range, in which+-- case an 'ALInvalidValue' error is set. If the source is not playing, then the+-- offset will be applied on the next 'play' call.+--+-- The position is relative to the beginning of all the queued buffers for the+-- source, and any queued buffers traversed by a set call will be marked as+-- processed.+--+-- This value is based on byte position, so a pitch-shifted source will have an+-- exaggerated playback speed. For example, you can be 0.5 seconds into a buffer+-- having taken only 0.25 seconds to get there if the pitch is set to 2.++secOffset :: Source -> StateVar ALfloat+secOffset = makeSourceStateVar dictALfloat GetSecOffset++-- | 'sampleOffset' contains the playback position, expressed in samples (the+-- value will loop back to zero for looping sources). For a compressed format,+-- this value will represent an exact offset within the uncompressed data.+-- +-- When setting 'sampleOffset' on a source which is already playing, the+-- playback will jump to the new offset unless the new offset is out of range,+-- in which case an 'ALInvalidValue' error is set. If the source is not playing,+-- then the offset will be applied on the next 'play' call. A 'stop', 'rewind',+-- or a second 'play' call will reset the offset to the beginning of the buffer.+-- +-- The position is relative to the beginning of all the queued buffers for the+-- source, and any queued buffers traversed by a set call will be marked as+-- processed.++sampleOffset :: Source -> StateVar ALint+sampleOffset = makeSourceStateVar dictALint GetSampleOffset++-- | 'byteOffset' contains the playback position, expressed in bytes (the value+-- will loop back to zero for looping sources). For a compressed format, this+-- value may represent an approximate offset within the compressed data buffer.+-- +-- When setting 'byteOffset' on a source which is already playing, the playback+-- will jump to the new offset unless the new offset is out of range, in which+-- case an 'ALInvalidValue' error is set. If the source is not playing, then the+-- offset will be applied on the next 'play' call. A 'stop', 'rewind', or a+-- second 'play' call will reset the offset to the beginning of the buffer.+-- +-- The position is relative to the beginning of all the queued buffers for the+-- source, and any queued buffers traversed by a set call will be marked as+-- processed.++byteOffset :: Source -> StateVar ALint+byteOffset = makeSourceStateVar dictALint GetByteOffset++--------------------------------------------------------------------------------++pairStateVars :: StateVar a -> StateVar b -> StateVar (a,b)+pairStateVars var1 var2 =+   makeStateVar+      (liftM2 (,) (get var1) (get var2))+      (\(val1,val2) -> do var1 $= val1; var2 $= val2)++data Dictionary a b c = Dictionary {+   alGetter  :: Source -> ALenum -> Ptr b -> IO (),+   alSetter  :: Source -> ALenum -> Ptr b -> IO (),+   size      :: Int,+   peekSize  :: Ptr b -> IO a,+   marshal   :: a -> c }++dictALint :: Dictionary ALint ALint ALint+dictALint = Dictionary {+   alGetter  = alGetSourceiv,+   alSetter  = alSourceiv,+   size      = 1,+   peekSize  = peek1 id,+   marshal   = id }++dictALfloat :: Dictionary ALfloat ALfloat ALfloat+dictALfloat = Dictionary {+   alGetter  = alGetSourcefv,+   alSetter  = alSourcefv,+   size      = 1,+   peekSize  = peek1 id,+   marshal   = id }++dictSourceRelative :: Dictionary SourceRelative ALint ALint+dictSourceRelative = Dictionary {+   alGetter  = alGetSourceiv,+   alSetter  = alSourceiv,+   size      = 1,+   peekSize  = peek1 (unmarshalSourceRelative . unmarshalALboolean . fromIntegral),+   marshal   = fromIntegral . marshalALboolean . marshalSourceRelative }++dictSourceType :: Dictionary SourceType ALint ALint+dictSourceType = Dictionary {+   alGetter  = alGetSourceiv,+   alSetter  = undefined,+   size      = 1,+   peekSize  = peek1 unmarshalSourceType,+   marshal   = undefined }++dictLoopingMode :: Dictionary LoopingMode ALint ALint+dictLoopingMode = Dictionary {+   alGetter  = alGetSourceiv,+   alSetter  = alSourceiv,+   size      = 1,+   peekSize  = peek1 (unmarshalLoopingMode . unmarshalALboolean . fromIntegral),+   marshal   = fromIntegral . marshalALboolean . marshalLoopingMode }++dictSourceState :: Dictionary SourceState ALint ALint+dictSourceState = Dictionary {+   alGetter  = alGetSourceiv,+   alSetter  = undefined,+   size      = 1,+   peekSize  = peek1 unmarshalSourceState,+   marshal   = undefined }++dictVertex3ALfloat :: Dictionary (Vertex3 ALfloat) ALfloat (Vertex3 ALfloat)+dictVertex3ALfloat = Dictionary {+   alGetter  = alGetSourcefv,+   alSetter  = alSourcefv,+   size      = 3,+   peekSize  = peek3 Vertex3,+   marshal   = id }++dictVector3ALfloat :: Dictionary (Vector3 ALfloat) ALfloat (Vector3 ALfloat)+dictVector3ALfloat = Dictionary {+   alGetter  = alGetSourcefv,+   alSetter  = alSourcefv,+   size      = 3,+   peekSize  = peek3 Vector3,+   marshal   = id }++dictMaybeBuffer :: Dictionary (Maybe Buffer) ALint ALint+dictMaybeBuffer = Dictionary {+   alGetter  = alGetSourceiv,+   alSetter  = alSourceiv,+   size      = 1,+   peekSize  = peek1 (unmarshalBuffer . fromIntegral),+   marshal   = fromIntegral . marshalBuffer }++makeGetter :: Storable b => Dictionary a b c -> GetPName -> Source -> IO a+makeGetter dict name source =+   allocaArray (size dict) $ \buf -> do+      alGetter dict source (marshalGetPName name) buf+      peekSize dict buf++makeSetter :: Storable c => Dictionary a b c -> GetPName -> Source -> a -> IO ()+makeSetter dict name source value =+   with (marshal dict value) $+      alSetter dict source (marshalGetPName name) . castPtr++makeSourceStateVar ::+   (Storable b, Storable c) =>+   Dictionary a b c -> GetPName -> Source -> StateVar a+makeSourceStateVar dict name source =+   makeStateVar+      (makeGetter dict name source)+      (makeSetter dict name source)++makeSourceGettableStateVar ::+   (Storable b, Storable c) =>+   Dictionary a b c -> GetPName -> Source -> GettableStateVar a+makeSourceGettableStateVar dict name source =+   makeGettableStateVar+      (makeGetter dict name source)++--------------------------------------------------------------------------------++foreign import CALLCONV unsafe "alGetSourcefv"+   alGetSourcefv :: Source -> ALenum -> Ptr ALfloat -> IO ()++foreign import CALLCONV unsafe "alSourcefv"+   alSourcefv :: Source -> ALenum -> Ptr ALfloat -> IO ()++foreign import CALLCONV unsafe "alGetSourceiv"+   alGetSourceiv :: Source ->  ALenum -> Ptr ALint -> IO ()++-- Note: Older OpenAL implementations have no alSourceiv, so we emulate it here.+alSourceiv :: Source -> ALenum -> Ptr ALint -> IO ()+alSourceiv source n buf =  peek buf >>= alSourcei source n++foreign import CALLCONV unsafe "alSourcei"+   alSourcei :: Source -> ALenum -> ALint -> IO ()++--------------------------------------------------------------------------------+-- $QueuingBuffersWithASource+-- OpenAL does not specify a built-in streaming mechanism. There is no mechanism+-- to stream data into a buffer object. Instead, the API has a more flexible and+-- versatile mechanism to queue buffers for sources. There are many ways to use+-- this feature, with streaming being only one of them.+--+-- Streaming is replaced by queuing static buffers. This effectively moves any+-- multi-buffer caching into the application and allows the application to+-- select how many buffers it wants to use, the size of the buffers, and whether+-- these are re-used in cycle, pooled, or thrown away.+--+-- Looping (over a finite number of repetitions) can be implemented by+-- explicitly repeating buffers in the queue. Infinite loops can (theoretically)+-- be accomplished by sufficiently large repetition counters. If only a single+-- buffer is supposed to be repeated infinitely, using the respective source+-- attribute 'loopingMode' is recommended.+--+-- Loop Points for restricted looping inside a buffer can in many cases be+-- replaced by splitting the sample into several buffers and queuing the sample+-- fragments (including repetitions) accordingly.+--+-- Buffers can be queued, unqueued after they have been used, and either be+-- deleted, or refilled and queued again. Splitting large samples over several+-- buffers maintained in a queue has distinct advantages over approaches that+-- require explicit management of samples and sample indices.++--------------------------------------------------------------------------------++-- | The application can queue up one or multiple buffer names using+-- 'queueBuffers'. The buffers will be queued in the sequence in which they+-- appear in the list.+--+-- This command is legal on a source in any playback state (to allow for+-- streaming, queuing has to be possible on a 'Playing' source).+--+-- All buffers in a queue must have the same format and attributes. An attempt+-- to mix formats or other buffer attributes will result in a failure and an+-- 'ALInvalidValue' error will be thrown. If the queue operation fails, the source+-- queue will remain unchanged (even if some of the buffers could have been+-- queued).++queueBuffers :: Source -> [Buffer] -> IO ()+queueBuffers = withArraySizei . alSourceQueueBuffers++withArraySizei :: Storable a => (ALsizei -> Ptr a -> IO ()) -> [a] -> IO ()+withArraySizei f xs = withArrayLen xs $ f . fromIntegral++foreign import CALLCONV unsafe "alSourceQueueBuffers"+   alSourceQueueBuffers :: Source -> ALsizei -> Ptr Buffer -> IO ()++--------------------------------------------------------------------------------++-- | Once a queue entry for a buffer has been appended to a queue and is pending+-- processing, it should not be changed. Removal of a given queue entry is not+-- possible unless either the source is stopped (in which case then entire queue+-- is considered processed), or if the queue entry has already been processed+-- ('Playing' or 'Paused' source). A playing source will enter the 'Stopped'+-- state if it completes playback of the last buffer in its queue (the same+-- behavior as when a single buffer has been attached to a source and has+-- finished playback).+--+-- The 'unqueueBuffers' command removes a number of buffers entries that have+-- finished processing, in the order of appearance, from the queue. The+-- operation will fail with an 'ALInvalidValue' error if more buffers are+-- requested than available, leaving the destination arguments unchanged.++unqueueBuffers :: Source -> [Buffer] -> IO ()+unqueueBuffers = withArraySizei . alSourceUnqueueBuffers++foreign import CALLCONV unsafe "alSourceUnqueueBuffers"+   alSourceUnqueueBuffers :: Source -> ALsizei -> Ptr Buffer -> IO ()++--------------------------------------------------------------------------------+-- $ManagingSourceExecution+-- The execution state of a source can be queried. OpenAL provides a set of+-- functions that initiate state transitions causing sources to start and stop+-- execution.++--------------------------------------------------------------------------------++-- | Contains the current execution state of the given source. The initial state+-- of any source is 'Initial'.+--+-- Note that the 'Initial' state is not necessarily identical to the initial+-- state in which a source is created, because the other source attributes are+-- not automatically reset to their initial values. 'Initial' merely indicates+-- that the source can be executed using the 'play' command. A 'Stopped' or+-- 'Initial' source can be reset into the default configuration by using a+-- sequence of source commands as necessary. As the application has to specify+-- all relevant state anyway to create a useful source configuration, no reset+-- command is provided.++sourceState :: Source -> GettableStateVar SourceState+sourceState source =+   makeGettableStateVar+      (makeGetter dictSourceState GetSourceState source)++--------------------------------------------------------------------------------++-- | 'play' applied to an 'Initial' source will promote the source to 'Playing',+-- thus the data found in the buffer will be fed into the processing, starting+-- at the beginning. 'play' applied to a 'Playing' source will restart the+-- source from the beginning. It will not affect the configuration, and will+-- leave the source in 'Playing' state, but reset the sampling offset to the+-- beginning. 'play' applied to a 'Paused' source will resume processing using+-- the source state as preserved at the 'pause' operation. 'play' applied to a+-- 'Stopped' source will propagate it to 'Initial' then to 'Playing'+-- immediately.++play :: [Source] -> IO ()+play = withArraySizei alSourcePlayv++foreign import CALLCONV unsafe "alSourcePlayv"+   alSourcePlayv :: ALsizei -> Ptr Source -> IO ()++-- | 'pause' applied to an 'Initial' source is a legal NOP. 'pause' applied to a+-- 'Playing' source will change its state to 'Paused'. The source is exempt from+-- processing, its current state is preserved. 'pause' applied to a 'Paused'+-- source is a legal NOP. 'pause' applied to a 'Stopped' source is a legal NOP.++pause :: [Source] -> IO ()+pause = withArraySizei alSourcePausev++foreign import CALLCONV unsafe "alSourcePausev"+   alSourcePausev :: ALsizei -> Ptr Source -> IO ()++-- | 'stop' applied to an 'Initial' source is a legal NOP. 'stop' applied to a+-- 'Playing' source will change its state to 'Stopped'. The source is exempt+-- from processing, its current state is preserved. 'stop' applied to a 'Paused'+-- source will change its state to 'Stopped', with the same consequences as on a+-- 'Playing' source. 'stop' applied to a 'Stopped' source is a legal NOP.++stop :: [Source] -> IO ()+stop = withArraySizei alSourceStopv++foreign import CALLCONV unsafe "alSourceStopv"+   alSourceStopv :: ALsizei -> Ptr Source -> IO ()++-- | 'rewind' applied to an 'Initial' source is a legal NOP. 'rewind' applied to+-- a 'Playing' source will change its state to 'Stopped' then 'Initial'. The+-- source is exempt from processing: its current state is preserved, with the+-- exception of the sampling offset, which is reset to the beginning.  'rewind'+-- applied to a 'Paused' source will change its state to 'Initial', with the+-- same consequences as on a 'Playing' source.  'rewind' applied to an 'Stopped'+-- source promotes the source to 'Initial', resetting the sampling offset to the+-- beginning.++rewind :: [Source] -> IO ()+rewind = withArraySizei alSourceRewindv++foreign import CALLCONV unsafe "alSourceRewindv"+   alSourceRewindv :: ALsizei -> Ptr Source -> IO ()
+ Sound/OpenAL/AL/SourceState.hs view
@@ -0,0 +1,46 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.SourceState+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.SourceState (+   SourceState(..), unmarshalSourceState+) where++import Sound.OpenAL.AL.BasicTypes ( ALint )+import Sound.OpenAL.Constants ( al_INITIAL, al_PLAYING, al_PAUSED, al_STOPPED )++--------------------------------------------------------------------------------++-- | Each source can be in one of four possible execution states: 'Initial',+-- 'Playing', 'Paused', 'Stopped'. Sources that are either 'Playing' or 'Paused'+-- are considered active. Sources that are 'Stopped' or 'Initial' are considered+-- inactive. Only 'Playing' sources are included in the processing. The+-- implementation is free to skip those processing stages for sources that have+-- no effect on the output (e.g. mixing for a source muted by zero gain, but not+-- sample offset increments). Depending on the current state of a source certain+-- (e.g. repeated) state transition commands are legal NOPs: they will be+-- ignored, no error is generated.++data SourceState =+     Initial+   | Playing+   | Paused+   | Stopped+   deriving ( Eq, Ord, Show )++unmarshalSourceState :: ALint -> SourceState+unmarshalSourceState x+   | x == al_INITIAL = Initial+   | x == al_PLAYING = Playing+   | x == al_PAUSED = Paused+   | x == al_STOPPED = Stopped+   | otherwise = error ("unmarshalSourceState: illegal value " ++ show x)
+ Sound/OpenAL/AL/String.hs view
@@ -0,0 +1,31 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.String+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.String (+   withALString, peekALString+) where++import Foreign.C.String ( withCString, peekCString )+import Foreign.Ptr ( Ptr, castPtr )+import Sound.OpenAL.AL.BasicTypes ( ALchar )++--------------------------------------------------------------------------------++-- AL uses "Ptr ALchar" instead of "CString" for strings, so some wrappers+-- are quite handy.++withALString :: String -> (Ptr ALchar -> IO a) -> IO a+withALString str action = withCString str (action . castPtr)++peekALString :: Ptr ALchar -> IO String+peekALString = peekCString . castPtr
+ Sound/OpenAL/AL/StringQueries.hs view
@@ -0,0 +1,34 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.AL.StringQueries+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 3.1.2 (String Queries) of the OpenAL+-- Specification and Reference (version 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.AL.StringQueries (+   alVendor, alRenderer+) where++import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar )+import Sound.OpenAL.AL.QueryUtils ( StringName(..), getString )++--------------------------------------------------------------------------------++-- | Contains the name of the vendor.++alVendor :: GettableStateVar String+alVendor = makeGettableStateVar (getString Vendor)++-- | Contains information about the specific renderer.++alRenderer :: GettableStateVar String+alRenderer = makeGettableStateVar (getString Renderer)
+ Sound/OpenAL/ALC.hs view
@@ -0,0 +1,35 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to chapter 6 (AL Contexts and the ALC API) of the+-- OpenAL Specification and Reference (version 1.1).+--+-- ALC is a portable API for managing OpenAL contexts, including resource+-- sharing, locking, and unlocking. Within the core AL API the existence of a+-- context is implied, but the context is not exposed. The context encapsulates+-- the state of a given instance of the AL state machine.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC (+   module Sound.OpenAL.ALC.BasicTypes,+   module Sound.OpenAL.ALC.Device,+   module Sound.OpenAL.ALC.Context,+   module Sound.OpenAL.ALC.Extensions,+   module Sound.OpenAL.ALC.Errors,+   module Sound.OpenAL.ALC.Capture+) where++import Sound.OpenAL.ALC.BasicTypes+import Sound.OpenAL.ALC.Device+import Sound.OpenAL.ALC.Context+import Sound.OpenAL.ALC.Extensions+import Sound.OpenAL.ALC.Errors+import Sound.OpenAL.ALC.Capture
+ Sound/OpenAL/ALC/ALCboolean.hs view
@@ -0,0 +1,30 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.ALCboolean+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This is a purely internal module for (un-)marshaling ALCboolean.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.ALCboolean (+   marshalALCboolean, unmarshalALCboolean+) where++import Sound.OpenAL.ALC.BasicTypes ( ALCboolean )+import Sound.OpenAL.Constants ( alc_FALSE, alc_TRUE )++--------------------------------------------------------------------------------++marshalALCboolean :: Bool -> ALCboolean+marshalALCboolean False = alc_FALSE+marshalALCboolean True  = alc_TRUE++unmarshalALCboolean :: ALCboolean -> Bool+unmarshalALCboolean = (/= alc_FALSE)
+ Sound/OpenAL/ALC/BasicTypes.hs view
@@ -0,0 +1,24 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.BasicTypes+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to the introductory parts of chapter 6 (AL Contexts+-- and the ALC API) of the OpenAL Specification and Reference (version 1.1).+--+-- The context API makes use of ALC types which are defined separately from the+-- AL types - there is an 'ALCboolean', 'ALCchar', etc.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.BasicTypes (+   ALCboolean, ALCchar, ALCbyte, ALCubyte, ALCshort, ALCushort, ALCint, ALCuint,+   ALCsizei, ALCenum, ALCfloat, ALCdouble+) where++import Sound.OpenAL.Config
+ Sound/OpenAL/ALC/Capture.hs view
@@ -0,0 +1,138 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.Capture+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 6.4.2. (Capture) of the OpenAL+-- Specification and Reference (version 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.Capture (+   NumSamples, captureOpenDevice, captureStart, captureNumSamples,+   captureSamples, captureStop, captureCloseDevice,+   captureDefaultDeviceSpecifier, captureDeviceSpecifier,+   allCaptureDeviceSpecifiers+) where++import Foreign.Ptr ( Ptr, nullPtr, FunPtr )+import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar, get )+import Sound.OpenAL.AL.Buffer ( Format )+import Sound.OpenAL.AL.Format ( marshalFormat )+import Sound.OpenAL.ALC.ALCboolean ( unmarshalALCboolean )+import Sound.OpenAL.ALC.BasicTypes (+   ALCchar, ALCuint, ALCenum, ALCsizei, ALCboolean )+import Sound.OpenAL.ALC.Context ( Frequency )+import Sound.OpenAL.ALC.Device ( Device )+import Sound.OpenAL.ALC.Extensions ( alcProcAddress )+import Sound.OpenAL.ALC.QueryUtils ( IntQuery(..), getInteger )+import Sound.OpenAL.ALC.QueryUtils (+   StringQuery(..), getString, getStringRaw, alcIsExtensionPresent )+import Sound.OpenAL.ALC.String ( withALCString, peekALCStrings )+import Sound.OpenAL.Config ( ALCdevice, marshalDevice, unmarshalDevice )++--------------------------------------------------------------------------------++type NumSamples = ALCsizei++--------------------------------------------------------------------------------++type Invoker a = FunPtr a -> a++getCaptureFunc :: String -> IO (FunPtr a)+getCaptureFunc = get . alcProcAddress Nothing++--------------------------------------------------------------------------------++captureOpenDevice ::+   Maybe String -> Frequency -> Format -> NumSamples -> IO (Maybe Device)+captureOpenDevice maybeDeviceSpec frequency format size = do+   funPtr <- getCaptureFunc "alcCaptureOpenDevice"+   let open deviceSpec =+          invokeCaptureOpenDevice funPtr deviceSpec (round frequency)+                                  (fromIntegral (marshalFormat format)) size+   fmap unmarshalDevice $+      (maybe (open nullPtr)   -- use preferred device+             (flip withALCString open)+             maybeDeviceSpec)++foreign import CALLCONV unsafe "dynamic"+   invokeCaptureOpenDevice :: Invoker (Ptr ALCchar -> ALCuint -> ALCenum -> ALCsizei -> IO ALCdevice)++--------------------------------------------------------------------------------++captureStart :: Device -> IO ()+captureStart = captureStartStop "alcCaptureStart"++captureStartStop :: String -> Device -> IO ()+captureStartStop funName device = do+   funPtr <- getCaptureFunc funName+   invokeCaptureStartStop funPtr (marshalDevice device)++foreign import CALLCONV unsafe "dynamic"+   invokeCaptureStartStop :: Invoker (ALCdevice -> IO ()) ++--------------------------------------------------------------------------------++captureNumSamples :: Device -> GettableStateVar NumSamples+captureNumSamples device = makeGettableStateVar $+   fmap fromIntegral (getInteger (Just device) CaptureSamples)++--------------------------------------------------------------------------------++captureSamples :: Device -> Ptr a -> NumSamples -> IO ()+captureSamples device buf n = do+   funPtr <- getCaptureFunc "alcCaptureSamples"+   invokeCaptureSamples funPtr (marshalDevice device) buf n++foreign import CALLCONV unsafe "dynamic"+   invokeCaptureSamples :: Invoker (ALCdevice -> Ptr a -> NumSamples -> IO ())++--------------------------------------------------------------------------------++captureStop :: Device -> IO ()+captureStop = captureStartStop "alcCaptureStop"++--------------------------------------------------------------------------------++captureCloseDevice :: Device -> IO Bool+captureCloseDevice device = do+   funPtr <- getCaptureFunc "alcCaptureCloseDevice"+   fmap unmarshalALCboolean .+      invokeCaptureCloseDevice funPtr . marshalDevice $ device++foreign import CALLCONV unsafe "dynamic"+   invokeCaptureCloseDevice :: Invoker (ALCdevice -> IO ALCboolean) ++--------------------------------------------------------------------------------++-- | Contains the name of the default capture device.++captureDefaultDeviceSpecifier :: GettableStateVar String+captureDefaultDeviceSpecifier = makeGettableStateVar $+   getString Nothing CaptureDefaultDeviceSpecifier++--------------------------------------------------------------------------------++-- | Contains the specifier string for the given capture device.++captureDeviceSpecifier :: Device -> GettableStateVar String+captureDeviceSpecifier device = makeGettableStateVar $+   getString (Just device) CaptureDeviceSpecifier++--------------------------------------------------------------------------------++-- | Contains a list of specifiers for all available capture devices.++allCaptureDeviceSpecifiers :: GettableStateVar [String]+allCaptureDeviceSpecifiers = makeGettableStateVar $ do+   enumExtPresent <- get (alcIsExtensionPresent Nothing "ALC_ENUMERATION_EXT")+   if enumExtPresent+      then peekALCStrings =<< getStringRaw Nothing CaptureDeviceSpecifier+      else fmap (\s -> [s]) $ get captureDefaultDeviceSpecifier
+ Sound/OpenAL/ALC/Context.hs view
@@ -0,0 +1,200 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.Context+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 6.2 (Managing Rendering Contexts) of the+-- OpenAL Specification and Reference (version 1.1).+--+-- All operations of the AL core API affect a current AL context. Within the+-- scope of AL, the ALC is implied - it is not visible as a handle or function+-- parameter. Only one AL Context per process can be current at a time.+-- Applications maintaining multiple AL Contexts, whether threaded or not,+-- have to set the current context accordingly. Applications can have multiple+-- threads that share one more or contexts. In other words, AL and ALC are+-- threadsafe.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.Context (+   Frequency, ContextAttribute(..), Context, createContext, currentContext,+   processContext, suspendContext, destroyContext, contextsDevice, allAttributes+) where+++import Foreign.Marshal.Array ( withArray0 )+import Foreign.Ptr ( Ptr )+import Graphics.Rendering.OpenGL.GL.StateVar (+   StateVar, makeStateVar, GettableStateVar, makeGettableStateVar )+import Sound.OpenAL.ALC.BasicTypes ( ALCint )+import Sound.OpenAL.ALC.ALCboolean ( marshalALCboolean, unmarshalALCboolean )+import Sound.OpenAL.ALC.Device ( Device )+import Sound.OpenAL.ALC.QueryUtils ( IntQuery(..), getInteger, getIntegerv )+import Sound.OpenAL.Config (+   ALCdevice, marshalDevice, unmarshalDevice,+   ALCcontext, Context, nullContext, marshalContext, unmarshalContext,+   alcProcessContext, alcDestroyContext, alcMakeContextCurrent )+import Sound.OpenAL.Constants (+   alc_FREQUENCY, alc_REFRESH, alc_SYNC, alc_MONO_SOURCES, alc_STEREO_SOURCES )++#ifdef __HADDOCK__+import Sound.OpenAL.ALC.Errors ( ALCErrorCategory(..) )+#endif++--------------------------------------------------------------------------------++-- | Frequency, specified in samples per second, i.e. units of Hertz \[Hz\].+-- Note that the underlying OpenAL API currently uses integral frequencies+-- only, but we want to mirror physical reality here more closely.++type Frequency = Float++--------------------------------------------------------------------------------++-- | The application can choose to specify certain attributes for a context at+-- context-creation time. Attributes not specified explicitly are set to+-- implementation dependent defaults.++data ContextAttribute =+     Frequency Frequency   -- ^ Frequency for mixing output buffer, in units of+                           --   Hz+   | Refresh Frequency     -- ^ Refresh intervals, in units of Hz+   | Sync Bool             -- ^ Flag, indicating a synchronous context+   | MonoSources Int       -- ^ A hint indicating how many sources should be+                           --   capable of supporting mono data+   | StereoSources Int     -- ^ A hint indicating how many sources should be+                           --   capable of supporting stereo data+   deriving ( Eq, Ord, Show )++marshalContextAttribute :: ContextAttribute -> (ALCint,ALCint)+marshalContextAttribute a = case a of+   Frequency f -> (alc_FREQUENCY, round f)+   Refresh r -> (alc_REFRESH, round r)+   Sync s -> (alc_SYNC, fromIntegral (marshalALCboolean s))+   MonoSources m -> (alc_MONO_SOURCES, fromIntegral m)+   StereoSources s -> (alc_STEREO_SOURCES, fromIntegral s)++unmarshalContextAttribute :: (ALCint,ALCint) -> ContextAttribute+unmarshalContextAttribute a@(x,y)+   | x == alc_FREQUENCY = Frequency (fromIntegral y)+   | x == alc_REFRESH = Refresh (fromIntegral y)+   | x == alc_SYNC = Sync (unmarshalALCboolean (fromIntegral y))+   | x == alc_MONO_SOURCES = MonoSources (fromIntegral y)+   | x == alc_STEREO_SOURCES = StereoSources (fromIntegral y)+   | otherwise = error ("unmarshalContextAttribute: illegal value " ++ show a)++--------------------------------------------------------------------------------++-- | Create a context for a given device and given attributes. Context creation+-- will fail in the following cases: a) if the application requests attributes+-- that, by themselves, can not be provided b) if the combination of specified+-- attributes can not be provided c) if a specified attribute, or the+-- combination of attributes, does not match the default values for unspecified+-- attributes If context creation fails, 'Nothing' will be returned, otherwise+-- 'Just' the new context. Note that 'createContext' does /not/ set the current+-- context, this must be done separately via 'currentContext'.++createContext :: Device -> [ContextAttribute] -> IO (Maybe Context)+createContext device attributes = do+   let pairToList (key, value) = [key, value]+       attrs = concatMap (pairToList . marshalContextAttribute) attributes+   fmap unmarshalContext .+      withArray0 0 attrs . alcCreateContext . marshalDevice $ device++foreign import CALLCONV unsafe "alcCreateContext"+   alcCreateContext :: ALCdevice -> Ptr ALCint -> IO ALCcontext++--------------------------------------------------------------------------------++-- | Contains 'Just' the current context with respect to OpenAL operation, or+-- 'Nothing' if there is no current context. Setting it to the latter is useful+-- when shutting OpenAL down. The state variable applies to the device that the+-- context was created for. For each OS process (usually this means for each+-- application), only one context can be current at any given time. All AL+-- commands apply to the current context. Commands that affect objects shared+-- among contexts (e.g. buffers) have side effects on other contexts.++currentContext :: StateVar (Maybe Context)+currentContext = makeStateVar getCurrentContext makeContextCurrent++getCurrentContext :: IO (Maybe Context)+getCurrentContext = fmap unmarshalContext $ alcGetCurrentContext++foreign import CALLCONV unsafe "alcGetCurrentContext"+   alcGetCurrentContext :: IO ALCcontext++makeContextCurrent :: Maybe Context -> IO ()+makeContextCurrent =+   fmap (const ()) . alcMakeContextCurrent . marshalContext . maybe nullContext id++--------------------------------------------------------------------------------++-- | The current context is the only context accessible to state changes by AL+-- commands (aside from state changes affecting shared objects). However,+-- multiple contexts can be processed at the same time. To indicate that a+-- context should be processed (i.e. that internal execution state like offset+-- increments are supposed to be performed), the application has to use+-- 'processContext'. Repeated calls to 'processContext' are legal, and do not+-- affect a context that is already marked as processing. The default state of a+-- context created by 'createContext' is that it is processing.++processContext :: Context -> IO ()+processContext = fmap (const ()) . alcProcessContext . marshalContext++-- | The application can suspend any context from processing (including the+-- current one). To indicate that a context should be suspended from processing+-- (i.e. that internal execution state like offset increments is not supposed to+-- be changed), the application has to use 'suspendContext'. Repeated calls to+-- 'suspendContext' are legal, and do not affect a context that is already+-- marked as suspended.++suspendContext :: Context -> IO ()+suspendContext = alcSuspendContext . marshalContext++foreign import CALLCONV unsafe "alcSuspendContext"+   alcSuspendContext :: ALCcontext -> IO ()++--------------------------------------------------------------------------------++-- | Destroy the given context. Note that the the correct way to destroy a+-- context is to first release it by setting 'currentContext' to+-- 'Nothing'. Applications should not attempt to destroy a current context,+-- doing so will not work and will result in an 'ALCInvalidOperation' error.++destroyContext :: Context -> IO ()+destroyContext = fmap (const ()) . alcDestroyContext . marshalContext++--------------------------------------------------------------------------------++-- | Contains 'Just' the device of the given context or 'Nothing' if the context+-- is invalid.++contextsDevice :: Context -> GettableStateVar (Maybe Device)+contextsDevice =+   makeGettableStateVar .+      fmap unmarshalDevice . alcGetContextsDevice . marshalContext++foreign import CALLCONV unsafe "alcGetContextsDevice"+   alcGetContextsDevice :: ALCcontext -> IO ALCdevice++--------------------------------------------------------------------------------++-- | Contains the attribute list for the current context of the specified+-- device.++allAttributes :: Device -> GettableStateVar [ContextAttribute]+allAttributes device = makeGettableStateVar $ do+   numALCints <- fmap fromIntegral $ getInteger (Just device) AttributesSize+   fmap toContextAttributes $ getIntegerv (Just device) AllAttributes numALCints++toContextAttributes :: [ALCint] -> [ContextAttribute]+toContextAttributes xs = case xs of+   [] -> []  -- should only happen when device and/or current context is invalid+   (0:_) -> []+   (x:y:rest) -> unmarshalContextAttribute (x,y) : toContextAttributes rest+   _ -> error ("toContextAttributes: illegal value " ++ show xs)
+ Sound/OpenAL/ALC/Device.hs view
@@ -0,0 +1,223 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.Device+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 6.1 (Managing Devices) of the OpenAL+-- Specification and Reference (version 1.1).+--+-- ALC introduces the notion of a device. A device can be, depending on the+-- implementation, a hardware device, or a daemon\/OS service\/actual+-- server. This mechanism also permits different drivers (and hardware) to+-- coexist within the same system, as well as allowing several applications to+-- share system resources for audio, including a single hardware output+-- device. The details are left to the implementation, which has to map the+-- available backends to unique device specifiers.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.Device (+   Device, openDevice, closeDevice,+   defaultDeviceSpecifier, deviceSpecifier, allDeviceSpecifiers+) where++import Foreign.Ptr ( Ptr, nullPtr )+import Foreign.Marshal.Utils ( maybePeek )+import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar, get )+import Sound.OpenAL.ALC.BasicTypes ( ALCchar )+import Sound.OpenAL.ALC.QueryUtils (+   StringQuery(..), getString, getStringRaw, alcIsExtensionPresent )+import Sound.OpenAL.ALC.String ( withALCString, peekALCString, peekALCStrings )+import Sound.OpenAL.Config (+   Device, ALCdevice, unmarshalDevice, closeDevice )++--------------------------------------------------------------------------------++-- | 'openDevice' allows the application (i.e. the client program) to connect to+-- a device (i.e. the server). If the function returns 'Nothing', then no sound+-- driver\/device has been found. The argument to 'openDevice' specifies a+-- certain device or device configuration. If it is 'Nothing', the+-- implementation will provide an implementation specific default, see+-- 'defaultDeviceSpecifier'. Otherwise it is 'Just' an implementation-dependent+-- string. You can use 'allDeviceSpecifiers' to get a list of the known OpenAL+-- devices.+--+-- /Notes for Windows:/ There are 3 possible device strings, each having a+-- deprecated equivalent for legacy applications only:+--+-- * @\"Generic Hardware\"@ (legacy string: @\"DirectSound3D\"@)+--+-- * @\"Generic Software\"@ (legacy string: @\"DirectSound\"@)+--+-- * @\"Generic Software Fallback\"@ (legacy string: @\"MMSYSTEM\"@)+--+-- /Notes for Linux\/\*nix:/ If an @.openalrc@ file is present in the user\'s+-- home directory, it is loaded first, otherwise @\/etc\/openalrc@ is tried.+-- The bindings (if any) of @devices@, @direction@, @sampling-rate@, and+-- @speaker-num@ (see below) after loading one of these files take precedence+-- over any bindings done via the argument to 'openDevice'.+--+-- The syntax of these files is lisp-based and a sequence of expressions, where+-- an expression is one the following:+--+-- * A boolean value of the form @\#f@ or @\#t@, which evaluate to /false/ and+-- /true/, respectively.+--+-- * An non-negative integer value, i.e. a sequence of decimal digits,+-- evaluating to itself.+--+-- * A (signed) floating point value, as recoginzed by C\'s @atof()@, evaluating+-- to itself.+--+-- * A pointer value of the form @\#p/num/@, where /num/ can be an octal,+-- decimal or hexadecimal value, as recoginzed by C\`s @strtol()@, evaluating+-- to itself. This kind of expression is currently unused.+--+-- * A string, i.e. a sequence of printable\/whitespace characters between+-- double quotes, evaluating to itself.+--+-- * A symbol, i.e. a sequence of almost all characters which don\'t form a+-- simple expression like the ones mentioned below, e.g. @foo@, @bar1@, @3baz@,+-- ... The symbol evaluates to the value currently bound to it.+--+-- * A function application of the form @(/symbol/ /expression/...)@. The+-- function bound to the symbol is applied to the evaluated arguments.+-- +-- * A quotation of the form @(quote /expression/)@ or @\'/expression/@,+-- evaluating to the unevaluated /expression/ itself.+--+-- * A definition of the form @(define /symbol/ /expression/)@, binding /symbol/+-- to the value of /expression/. The whole expression evaluates to the value of+-- /expression/, too.+--+-- * A conjunction of boolean expressions of the form @(and /expression/...)@.+-- Each /expression/ is evaluated in turn, and if one of them evaluates to+-- /false/, the value of the whole expression is /false/. Otherwise the value is+-- /true/.+--+-- * An extension loading mechanism of the form @(load-extension+-- /libraryName/)@, where /libraryName/ has to evaluate to a string. This tries+-- to load the dynamic library with up to 3 special entry points:+-- @alExtension_03282000@ (pointing to a mandatory NULL-terminated sequence of+-- pairs of pointers to names and extension functions), @alExtInit_03282000@ (an+-- optional initialization function), and @alExtFini_03282000@ (an optional+-- cleanup function). If the extension could be loaded successfully, the whole+-- expression evaluates to /true/, otherwise to /false/.+--+-- Some symbols have a special meaning for OpenAL:+--+-- [@devices@] Has the form @(/devspec/...)@, where /devspec/ is either a+-- symbol\/string specifying a device or @(/device/ /device-param/...)@,+-- specifying a device with additional parameters. These optional device+-- parameters are stored in a variable @device-params@, but are currently+-- unused. The first device which can successfully opened is used.+--+-- [@direction@] Type string or symbol: @\"read\"@ specifies that the device+-- should be an input device, everything else means output device (default).+--+-- [@sampling-rate@] Type integer or float: Specifies the internal mixing+-- frequency, default is 44.1kHz.+--+-- [@speaker-num@] Type integer or float: Specifies the number of speakers,+-- which can be 1, 2 (default), or 4.+--+-- [@alsa-device@] Type string, @alsa@ backend only: Specifies both+-- @alsa-out-device@ and @alsa-in-device@, default @\"plughw:0,0\"@.+-- +-- [@alsa-out-device@] Type string, @alsa@ backend only: Specifies the ALSA+-- output device, defaults to the value of @alsa-device@.+--+-- [@alsa-in-device@] Type string, @alsa@ backend only: Specifies the ALSA+-- input device, defaults to the value of @alsa-device@.+--+-- [@native-in-device@] Type string, @native@ backend on IRIX only.+--+-- [@native-out-device@] Type string, @native@ backend on IRIX only.+--+-- [@native-rear-out-device@] Type string, @native@ backend on IRIX only.+--+-- [@native-use-select@] Type boolean, @native@ backend on Linux only: If @\#t@,+-- wait up to 0.8sec for the device to become ready for writing. If @\#f@, just+-- try to write and hope it won\'t hang forever. The latter might be necessary+-- for some drivers which don\'t implement @select()@ , like some Aureal+-- drivers.+--+-- [@lin-dsp-path@] Type string, @native@ backend on Linux only: Path to DSP+-- device for writing, tried before @\/dev\/sound\/dsp@ and @\/dev\/sound@ if+-- set.+--+-- [@lin-dsp-read-path@] Type string, @native@ backend on Linux only: Path to+-- DSP device for reading, tried before @\/dev\/sound\/dsp@ and @\/dev\/sound@+-- if set. Defaults to the value of @lin-dsp-path@.+--+-- [@native-backend-debug@] Type boolean, @native@ backend on Darwin only: If+-- set to @\#f@, be a bit verbose on stderr about what\'s going on in the+-- backend.+--+-- [@source-rolloff-factor@] Type integer or float: Value of the initial rolloff+-- factor for sources, default is @1.0@.+--+-- [@listener-position@] List of 3 integers or floats: Value of the initial+-- listener position, default is @(0 0 0)@.+--+-- [@listener-velocity@] List of 3 integers or floats: Value of the initial+-- listener velocity, default is @(0 0 0)@.+--+-- [@listener-orientation@] List of 6 integers or floats: Value of the initial+-- listener orientation (at\/up), default is @(0 0 -1 0 1 0)@.+--+-- The string given to 'openDevice' has to be of the form @\'((/symbol/+-- /expression/) ...)@, which means basically a sequence of @define@+-- expressions. Example:+--+-- @+-- \"\'((sampling-rate 8000) (native-backend-debug \#f))\"+-- @+--+-- /Note:/ The information above has been reverse-engineered from the OpenAL SI+-- and could be inaccurate. Any corrections and\/or additions are highly+-- welcome.++openDevice :: Maybe String -> IO (Maybe Device)+openDevice maybeDeviceSpec =+   fmap unmarshalDevice $+      maybe (alcOpenDevice nullPtr)   -- use preferred device+            (flip withALCString alcOpenDevice)+            maybeDeviceSpec++foreign import CALLCONV unsafe "alcOpenDevice"+   alcOpenDevice :: Ptr ALCchar -> IO ALCdevice++--------------------------------------------------------------------------------++-- | Contains 'Just' the specifier string for the default device or 'Nothing' if+-- there is no sound support at all.++defaultDeviceSpecifier :: GettableStateVar (Maybe String)+defaultDeviceSpecifier = makeGettableStateVar $+   getStringRaw Nothing DefaultDeviceSpecifier >>= maybePeek peekALCString++--------------------------------------------------------------------------------++-- | Contains the specifier string for the given device.++deviceSpecifier :: Device -> GettableStateVar String+deviceSpecifier device = makeGettableStateVar $+   getString (Just device) DeviceSpecifier++--------------------------------------------------------------------------------++-- | Contains a list of specifiers for all available devices.++allDeviceSpecifiers :: GettableStateVar [String]+allDeviceSpecifiers = makeGettableStateVar $ do+   enumExtPresent <- get (alcIsExtensionPresent Nothing "ALC_ENUMERATION_EXT")+   if enumExtPresent+      then getStringRaw Nothing DeviceSpecifier >>= peekALCStrings+      else get defaultDeviceSpecifier >>= (return . maybe [] (\s -> [s]))
+ Sound/OpenAL/ALC/Errors.hs view
@@ -0,0 +1,93 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.Errors+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to section 6.3.6 (Query for Error Conditions) of the+-- OpenAL Specification and Reference (version 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.Errors (+   ALCError(..), ALCErrorCategory(..), alcErrors+) where++import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar )+import Sound.OpenAL.ALC.BasicTypes ( ALCenum )+import Sound.OpenAL.ALC.Device ( Device )+import Sound.OpenAL.ALC.QueryUtils ( StringQuery(..), getString )+import Sound.OpenAL.Constants (+   alc_NO_ERROR, alc_INVALID_DEVICE, alc_INVALID_CONTEXT, alc_INVALID_ENUM,+   alc_INVALID_VALUE, alc_OUT_OF_MEMORY, alc_INVALID_OPERATION )+import Sound.OpenAL.Config ( ALCdevice, marshalDevice )++--------------------------------------------------------------------------------++-- | ALC errors consist of a general error category and a description of what+-- went wrong.++data ALCError = ALCError ALCErrorCategory String+   deriving ( Eq, Ord, Show )++--------------------------------------------------------------------------------++-- | General ALC error categories.++data ALCErrorCategory =+     ALCInvalidEnum+   | ALCInvalidValue+   | ALCInvalidOperation+   | ALCInvalidDevice+   | ALCInvalidContext+   | ALCOutOfMemory+   deriving ( Eq, Ord, Show )++unmarshalALCErrorCategory :: ALCenum -> ALCErrorCategory+unmarshalALCErrorCategory x+   | x == alc_INVALID_ENUM = ALCInvalidEnum+   | x == alc_INVALID_VALUE = ALCInvalidValue+   | x == alc_INVALID_OPERATION = ALCInvalidOperation+   | x == alc_INVALID_DEVICE = ALCInvalidDevice+   | x == alc_INVALID_CONTEXT = ALCInvalidContext+   | x == alc_OUT_OF_MEMORY = ALCOutOfMemory+   | otherwise = error ("unmarshalALCErrorCategory: illegal value " ++ show x)++--------------------------------------------------------------------------------++-- | OpenAL detects only a subset of those conditions that could be considered+-- errors. This is because in many cases error checking would adversely impact+-- the performance of an error-free program. The state variable 'alcErrors' is+-- used to obtain error information. When an error is detected by ALC, a flag is+-- set and the error code is recorded. Further errors, if they occur, do not+-- affect this recorded code. When 'alcErrors' is read, the error for the given+-- device is returned and the flag is cleared, so that a further error will+-- again record its code. If reading 'alcErrors' returns @\[\]@ then there has+-- been no detectable error since the last time 'alcErrors' (or since the ALC+-- was initialized).+--+-- When an error flag is set, results of ALC operations are undefined only if+-- 'ALCOutOfMemory' has occurred. In other cases, the command generating the+-- error is ignored so that it has no effect on ALC state or output buffer+-- contents. If the error generating command returns a value, it returns zero.+-- If the generating command modifies values through a pointer argument, no+-- change is made to these values. These error semantics apply only to ALC+-- errors, not to system errors such as memory access errors.++alcErrors :: Device -> GettableStateVar [ALCError]+alcErrors device =+   makeGettableStateVar $ do+      c <- alcGetError (marshalDevice device)+      if c == alc_NO_ERROR+         then return []+         else do+            s <- getString (Just device) (ALCErrorCategory c)+            return [ ALCError (unmarshalALCErrorCategory c) s ]++foreign import CALLCONV unsafe "alcGetError"+   alcGetError :: ALCdevice -> IO ALCenum
+ Sound/OpenAL/ALC/Extensions.hs view
@@ -0,0 +1,86 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.Extensions+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This module corresponds to the extension handling parts of section 6.3+-- (ALC Queries) of the OpenAL Specification and Reference (version 1.1).+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.Extensions (+   alcExtensions, alcIsExtensionPresent, alcProcAddress, alcEnumValue,+   alcVersion+) where++import Control.Monad ( liftM2 )+import Foreign.Ptr ( Ptr, FunPtr )+import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar )+import Sound.OpenAL.ALC.BasicTypes ( ALCchar, ALCenum, ALCint )+import Sound.OpenAL.ALC.Device ( Device )+import Sound.OpenAL.ALC.QueryUtils (+   StringQuery(..), getString, IntQuery(..), getInteger, alcIsExtensionPresent )+import Sound.OpenAL.ALC.String ( withALCString )+import Sound.OpenAL.Config ( ALCdevice, nullDevice, marshalDevice )++--------------------------------------------------------------------------------++-- | Contains a list of available context extensions.++alcExtensions :: Device -> GettableStateVar [String]+alcExtensions device = makeGettableStateVar $+   fmap words $ getString (Just device) Extensions++--------------------------------------------------------------------------------++-- | The application is expected to verify the applicability of an extension or+-- core function entry point before requesting it by name, by use of+-- 'alcIsExtensionPresent'. Extension entry points can be retrieved using+-- 'alcProcAddress'. Entry points can be device specific, but are not context+-- specific. Using 'Nothing' as the device does not guarantee that the entry+-- point is returned, even if available for one of the available devices.++alcProcAddress :: Maybe Device -> String -> GettableStateVar (FunPtr a)+alcProcAddress maybeDevice funcName =+   makeGettableStateVar .+      withALCString funcName .+         alcGetProcAddress . marshalDevice . maybe nullDevice id $ maybeDevice++foreign import CALLCONV unsafe "alcGetProcAddress"+   alcGetProcAddress :: ALCdevice -> Ptr ALCchar -> IO (FunPtr a)++--------------------------------------------------------------------------------++-- | Enumeration\/token values are device independent, but tokens defined for+-- extensions might not be present for a given device. Using 'Nothing' as the+-- device is legal, but only the tokens defined by the AL core are+-- guaranteed. Availability of extension tokens depends on the ALC extension.++alcEnumValue :: Maybe Device -> String -> GettableStateVar ALCenum+alcEnumValue maybeDevice enumName =+   makeGettableStateVar .+      withALCString enumName .+         alcGetEnumValue . marshalDevice . maybe nullDevice id $ maybeDevice++foreign import CALLCONV unsafe "alcGetEnumValue"+   alcGetEnumValue :: ALCdevice -> Ptr ALCchar -> IO ALCenum++--------------------------------------------------------------------------------++-- | Contains the \"/major/./minor/\" specification revision for this implementation.++alcVersion :: GettableStateVar String+alcVersion =+   makeGettableStateVar $+      liftM2 makeVersionString+             (getInteger Nothing MajorVersion)+             (getInteger Nothing MinorVersion)++makeVersionString :: ALCint -> ALCint -> String+makeVersionString major minor = show major ++ "." ++ show minor
+ Sound/OpenAL/ALC/QueryUtils.hs view
@@ -0,0 +1,122 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.QueryUtils+-- Copyright   :  (c) Sven Panne 2003-2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.QueryUtils (+   StringQuery(..), getString, getStringRaw,+   IntQuery(..), marshalIntQuery, getInteger, getIntegerv,+   alcIsExtensionPresent+) where++import Control.Monad ( when )+import Foreign.Marshal.Array ( withArray, peekArray )+import Foreign.Ptr ( Ptr )+import Graphics.Rendering.OpenGL.GL.StateVar (+   GettableStateVar, makeGettableStateVar )+import Sound.OpenAL.ALC.ALCboolean ( unmarshalALCboolean )+import Sound.OpenAL.ALC.BasicTypes (+   ALCboolean, ALCchar, ALCint, ALCenum, ALCsizei )+import Sound.OpenAL.ALC.String ( withALCString, peekALCString )+import Sound.OpenAL.Config ( Device, ALCdevice, nullDevice, marshalDevice )+import Sound.OpenAL.Constants (+   alc_DEFAULT_DEVICE_SPECIFIER, alc_DEVICE_SPECIFIER, alc_EXTENSIONS,+   alc_CAPTURE_DEFAULT_DEVICE_SPECIFIER, alc_CAPTURE_DEVICE_SPECIFIER,+   alc_ATTRIBUTES_SIZE, alc_ALL_ATTRIBUTES, alc_MAJOR_VERSION,+   alc_MINOR_VERSION, alc_CAPTURE_SAMPLES )++--------------------------------------------------------------------------------++data StringQuery =+     DefaultDeviceSpecifier+   | DeviceSpecifier+   | Extensions+   | CaptureDefaultDeviceSpecifier+   | CaptureDeviceSpecifier+   | ALCErrorCategory ALCenum++marshalStringQuery :: StringQuery -> ALCenum+marshalStringQuery x = case x of+   DefaultDeviceSpecifier -> alc_DEFAULT_DEVICE_SPECIFIER+   DeviceSpecifier -> alc_DEVICE_SPECIFIER+   Extensions -> alc_EXTENSIONS+   CaptureDefaultDeviceSpecifier -> alc_CAPTURE_DEFAULT_DEVICE_SPECIFIER+   CaptureDeviceSpecifier -> alc_CAPTURE_DEVICE_SPECIFIER+   ALCErrorCategory e -> e++--------------------------------------------------------------------------------++getString :: Maybe Device -> StringQuery -> IO String+getString device query = getStringRaw device query >>= peekALCString++getStringRaw :: Maybe Device -> StringQuery -> IO (Ptr ALCchar)+getStringRaw maybeDevice =+   alcGetString (marshalMaybeDevice maybeDevice) . marshalStringQuery++marshalMaybeDevice :: Maybe Device -> ALCdevice+marshalMaybeDevice = marshalDevice . maybe nullDevice id++foreign import CALLCONV unsafe "alcGetString"+   alcGetString :: ALCdevice -> ALCenum -> IO (Ptr ALCchar)++--------------------------------------------------------------------------------++data IntQuery =+     AttributesSize+   | AllAttributes+   | MajorVersion+   | MinorVersion+   | CaptureSamples++marshalIntQuery :: IntQuery -> ALCenum+marshalIntQuery x = case x of+   AttributesSize -> alc_ATTRIBUTES_SIZE+   AllAttributes -> alc_ALL_ATTRIBUTES+   MajorVersion -> alc_MAJOR_VERSION+   MinorVersion -> alc_MINOR_VERSION+   CaptureSamples -> alc_CAPTURE_SAMPLES++--------------------------------------------------------------------------------++getInteger :: Maybe Device -> IntQuery -> IO ALCint+getInteger maybeDevice query = fmap head $ getIntegerv maybeDevice query 1++-- We are extremely careful below to avoid segfaults in case that there is no+-- current context, an invalid device, etc.+getIntegerv :: Maybe Device -> IntQuery -> ALCsizei -> IO [ALCint]+getIntegerv maybeDevice query numALCints =+   let n = fromIntegral numALCints+   in withArray (replicate n 0) $ \buf -> do+         when (numALCints > 0) $+            alcGetIntegerv (marshalMaybeDevice maybeDevice)+                           (marshalIntQuery query) numALCints buf+         peekArray n buf++foreign import CALLCONV unsafe "alcGetIntegerv"+   alcGetIntegerv :: ALCdevice -> ALCenum -> ALCsizei -> Ptr ALCint -> IO ()++--------------------------------------------------------------------------------++-- | To verify that a given extension is available for the current context and+-- the device it is associated with, use 'alcIsExtensionPresent'. For invalid+-- and unsupported string tokens it contains 'False'. Using 'Nothing' as the+-- device is acceptable. The extension name is not case sensitive: The+-- implementation will convert the name to all upper-case internally (and will+-- express extension names in upper-case).++alcIsExtensionPresent :: Maybe Device -> String -> GettableStateVar Bool+alcIsExtensionPresent maybeDevice extensionName = makeGettableStateVar $+   fmap unmarshalALCboolean $+      withALCString extensionName $+         alcIsExtensionPresent_ (marshalMaybeDevice maybeDevice)++foreign import CALLCONV unsafe "alcIsExtensionPresent"+   alcIsExtensionPresent_ :: ALCdevice -> Ptr ALCchar -> IO ALCboolean
+ Sound/OpenAL/ALC/String.hs view
@@ -0,0 +1,42 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.ALC.String+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+--------------------------------------------------------------------------------++module Sound.OpenAL.ALC.String (+   withALCString, peekALCString, peekALCStrings+) where++import Foreign.C.String ( withCString, peekCString )+import Foreign.Marshal.Array ( lengthArray0 )+import Foreign.Ptr ( Ptr, castPtr, plusPtr )+import Sound.OpenAL.ALC.BasicTypes ( ALCchar )++--------------------------------------------------------------------------------++-- AL uses "Ptr ALCchar" instead of "CString" for strings, so some wrappers+-- are quite handy.++withALCString :: String -> (Ptr ALCchar -> IO a) -> IO a+withALCString str action = withCString str (action . castPtr)++peekALCString :: Ptr ALCchar -> IO String+peekALCString = peekCString . castPtr++peekALCStrings :: Ptr ALCchar -> IO [String]+peekALCStrings ptr = loop ptr []+   where loop p strs = do+            str <- peekALCString p+            if str == ""+               then return (reverse strs)+               else do+                  len <- lengthArray0 0 p+                  loop (p `plusPtr` (len + 1)) (str : strs)
+ Sound/OpenAL/Config.hs view
@@ -0,0 +1,233 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.Config+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This purely internal module defines the platform-specific stuff which has+-- been figured out by configure.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.Config (+   -- AL types+   ALboolean, ALchar, ALbyte, ALubyte, ALshort, ALushort, ALint, ALuint,+   ALsizei, ALenum, ALfloat, ALdouble,++   -- ALC types+   ALCboolean, ALCchar, ALCbyte, ALCubyte, ALCshort, ALCushort, ALCint, ALCuint,+   ALCsizei, ALCenum, ALCfloat, ALCdouble,++   -- Device stuff+   ALCdevice, Device, nullDevice, marshalDevice, unmarshalDevice, closeDevice,++   -- Context stuff+   ALCcontext, Context, nullContext, marshalContext, unmarshalContext,+   alcProcessContext, alcMakeContextCurrent, alcDestroyContext+) where++import Data.Int+import Data.Word+import Foreign.Ptr ( Ptr, nullPtr )++--------------------------------------------------------------------------------++#include "HsOpenALConfig.h"++--------------------------------------------------------------------------------+-- AL types++-- | 8-bit boolean+type ALboolean = HTYPE_ALBOOLEAN++-- | Character+type ALchar = HTYPE_ALCHAR++-- | Signed 8-bit 2\'s complement integer+type ALbyte = HTYPE_ALBYTE++-- | Unsigned 8-bit integer+type ALubyte = HTYPE_ALUBYTE++-- | Signed 16-bit 2\'s complement integer+type ALshort = HTYPE_ALSHORT++-- | Unsigned 16-bit integer+type ALushort = HTYPE_ALUSHORT++-- | Signed 32-bit 2\'s complement integer+type ALint = HTYPE_ALINT++-- | Unsigned 32-bit integer+type ALuint = HTYPE_ALUINT++-- | Non-negatitve 32-bit binary integer size+type ALsizei = HTYPE_ALSIZEI++-- | Enumerated 32-bit value+type ALenum = HTYPE_ALENUM++-- | 32-bit IEEE754 floating-point+type ALfloat = HTYPE_ALFLOAT++-- | 64-bit IEEE754 floating-point+type ALdouble = HTYPE_ALDOUBLE++--------------------------------------------------------------------------------+-- ALC types++-- | 8-bit boolean+type ALCboolean = HTYPE_ALCBOOLEAN++-- | Character+type ALCchar = HTYPE_ALCCHAR++-- | Signed 8-bit 2\'s complement integer+type ALCbyte = HTYPE_ALCBYTE++-- | Unsigned 8-bit integer+type ALCubyte = HTYPE_ALCUBYTE++-- | Signed 16-bit 2\'s complement integer+type ALCshort = HTYPE_ALCSHORT++-- | Unsigned 16-bit integer+type ALCushort = HTYPE_ALCUSHORT++-- | Signed 32-bit 2\'s complement integer+type ALCint = HTYPE_ALCINT++-- | Unsigned 32-bit integer+type ALCuint = HTYPE_ALCUINT++-- | Non-negatitve 32-bit binary integer size+type ALCsizei = HTYPE_ALCSIZEI++-- | Enumerated 32-bit value+type ALCenum = HTYPE_ALCENUM++-- | 32-bit IEEE754 floating-point+type ALCfloat = HTYPE_ALCFLOAT++-- | 64-bit IEEE754 floating-point+type ALCdouble = HTYPE_ALCDOUBLE++--------------------------------------------------------------------------------+-- In OpenAL 1.1, alcCloseDevice() returns an ALCboolean, before it was void.+-- To break a dependency cycle, we have to define the Device type here, too.++-- | The abstract device type.++newtype Device = Device ALCdevice+   deriving ( Eq, Ord, Show )++newtype ALCdevice = ALCdevice (Ptr ALCdevice)+   deriving ( Eq, Ord, Show )++nullDevice :: Device+nullDevice = Device (ALCdevice nullPtr)++marshalDevice :: Device -> ALCdevice+marshalDevice (Device device) = device++unmarshalDevice :: ALCdevice -> Maybe Device+unmarshalDevice device =+   if device == marshalDevice nullDevice then Nothing else Just (Device device)++-- | 'closeDevice' allows the application (i.e. the client program) to+-- disconnect from a device (i.e. the server). It returns 'True' for success and+-- 'False' for failure. Once closed, the 'Device' is invalid.+--+-- /Note:/ Older OpenAL implementations will always report a success!++closeDevice :: Device -> IO Bool++#if ALCCLOSEDEVICE_VOID++closeDevice = fmap (const True) . alcCloseDevice . marshalDevice++foreign import CALLCONV unsafe "alcCloseDevice"+   alcCloseDevice :: ALCdevice -> IO ()++#else++-- inlined unmarshalALCboolean here to break dependency cycle+closeDevice = fmap (/= CONST_ALC_FALSE) . alcCloseDevice . marshalDevice++foreign import CALLCONV unsafe "alcCloseDevice"+   alcCloseDevice :: ALCdevice -> IO ALCboolean++#endif++--------------------------------------------------------------------------------+-- In OpenAL 1.1, alcProcessContext() returns void for all platforms, before it+-- returned ALCcontext* on Linux. To break a dependency cycle, we have to define+-- the Context type here, too.++-- | The abstract context type.++data Context = Context ALCcontext+   deriving ( Eq, Ord, Show )++newtype ALCcontext = ALCcontext (Ptr ALCcontext)+   deriving ( Eq, Ord, Show )++nullContext :: Context+nullContext = Context (ALCcontext nullPtr)++marshalContext :: Context -> ALCcontext+marshalContext (Context context) = context++unmarshalContext :: ALCcontext -> Maybe Context+unmarshalContext context =+   if context == marshalContext nullContext then Nothing else Just (Context context)++#if ALCPROCESSCONTEXT_VOID++foreign import CALLCONV unsafe "alcProcessContext"+   alcProcessContext :: ALCcontext -> IO ()++#else++foreign import CALLCONV unsafe "alcProcessContext"+   alcProcessContext :: ALCcontext -> IO ALCcontext++#endif++--------------------------------------------------------------------------------+-- In OpenAL 1.1, alcMakeContextCurrent() returns void, before it was ALCenum on+-- Linux and ALCboolean on other platforms. Currently we default to ALCenum in+-- the latter case.++#if ALCMAKECONTEXTCURRENT_VOID++foreign import CALLCONV unsafe "alcMakeContextCurrent"+   alcMakeContextCurrent :: ALCcontext -> IO ()++#else++foreign import CALLCONV unsafe "alcMakeContextCurrent"+   alcMakeContextCurrent :: ALCcontext -> IO ALCenum++#endif++--------------------------------------------------------------------------------+-- In OpenAL 1.1, alcDestroyContext() returns void, before it returned ALCenum+-- on Linux.++#if ALCDESTROYCONTEXT_VOID++foreign import CALLCONV unsafe "alcDestroyContext"+   alcDestroyContext :: ALCcontext -> IO ()++#else++foreign import CALLCONV unsafe "alcDestroyContext"+   alcDestroyContext :: ALCcontext -> IO ALCenum++#endif
+ Sound/OpenAL/Constants.hs view
@@ -0,0 +1,166 @@+-- #hide+--------------------------------------------------------------------------------+-- |+-- Module      :  Sound.OpenAL.Constants+-- Copyright   :  (c) Sven Panne 2005+-- License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+-- +-- Maintainer  :  sven.panne@aedion.de+-- Stability   :  provisional+-- Portability :  portable+--+-- This purely internal module defines all AL\/ALC constants, which have been+-- figured out by configure. In contrast to OpenGL and GLUT, these constants+-- varied on different platforms in the past and have evolved quite a bit.+--+--------------------------------------------------------------------------------++module Sound.OpenAL.Constants where++import Sound.OpenAL.Config (+   ALboolean, ALint, ALenum, ALCboolean, ALCint, ALCenum )++--------------------------------------------------------------------------------++#include "HsOpenALConfig.h"++--------------------------------------------------------------------------------++al_FALSE, al_TRUE :: ALboolean+al_FALSE                            = CONST_AL_FALSE+al_TRUE                             = CONST_AL_TRUE++al_NO_ERROR, al_INVALID_NAME, al_INVALID_ENUM, al_INVALID_VALUE,+   al_INVALID_OPERATION, al_OUT_OF_MEMORY :: ALenum+al_NO_ERROR                         = CONST_AL_NO_ERROR+al_INVALID_NAME                     = CONST_AL_INVALID_NAME+al_INVALID_ENUM                     = CONST_AL_INVALID_ENUM+al_INVALID_VALUE                    = CONST_AL_INVALID_VALUE+al_INVALID_OPERATION                = CONST_AL_INVALID_OPERATION+al_OUT_OF_MEMORY                    = CONST_AL_OUT_OF_MEMORY++--------------------------------------------------------------------------------++al_DISTANCE_MODEL, al_DOPPLER_FACTOR, al_SPEED_OF_SOUND :: ALenum+al_DISTANCE_MODEL                   = CONST_AL_DISTANCE_MODEL+al_DOPPLER_FACTOR                   = CONST_AL_DOPPLER_FACTOR+al_SPEED_OF_SOUND                   = CONST_AL_SPEED_OF_SOUND++al_VERSION, al_RENDERER, al_VENDOR, al_EXTENSIONS :: ALenum+al_VERSION                          = CONST_AL_VERSION+al_RENDERER                         = CONST_AL_RENDERER+al_VENDOR                           = CONST_AL_VENDOR+al_EXTENSIONS                       = CONST_AL_EXTENSIONS++al_NONE, al_INVERSE_DISTANCE, al_INVERSE_DISTANCE_CLAMPED, al_LINEAR_DISTANCE,+   al_LINEAR_DISTANCE_CLAMPED, al_EXPONENT_DISTANCE,+   al_EXPONENT_DISTANCE_CLAMPED :: ALenum+al_NONE                             = CONST_AL_NONE+al_INVERSE_DISTANCE                 = CONST_AL_INVERSE_DISTANCE+al_INVERSE_DISTANCE_CLAMPED         = CONST_AL_INVERSE_DISTANCE_CLAMPED+al_LINEAR_DISTANCE                  = CONST_AL_LINEAR_DISTANCE+al_LINEAR_DISTANCE_CLAMPED          = CONST_AL_LINEAR_DISTANCE_CLAMPED+al_EXPONENT_DISTANCE                = CONST_AL_EXPONENT_DISTANCE+al_EXPONENT_DISTANCE_CLAMPED        = CONST_AL_EXPONENT_DISTANCE_CLAMPED++--------------------------------------------------------------------------------++al_POSITION, al_VELOCITY, al_GAIN :: ALenum+al_POSITION                         = CONST_AL_POSITION+al_VELOCITY                         = CONST_AL_VELOCITY+al_GAIN                             = CONST_AL_GAIN++al_ORIENTATION :: ALenum+al_ORIENTATION                      = CONST_AL_ORIENTATION++al_SOURCE_RELATIVE, al_SOURCE_TYPE, al_LOOPING, al_BUFFER, al_BUFFERS_QUEUED,+   al_BUFFERS_PROCESSED, al_MIN_GAIN, al_MAX_GAIN, al_REFERENCE_DISTANCE,+   al_ROLLOFF_FACTOR, al_MAX_DISTANCE, al_PITCH, al_DIRECTION,+   al_CONE_INNER_ANGLE, al_CONE_OUTER_ANGLE, al_CONE_OUTER_GAIN, al_SEC_OFFSET,+   al_SAMPLE_OFFSET, al_BYTE_OFFSET, al_SOURCE_STATE :: ALenum+al_SOURCE_RELATIVE                  = CONST_AL_SOURCE_RELATIVE+al_SOURCE_TYPE                      = CONST_AL_SOURCE_TYPE+al_LOOPING                          = CONST_AL_LOOPING+al_BUFFER                           = CONST_AL_BUFFER+al_BUFFERS_QUEUED                   = CONST_AL_BUFFERS_QUEUED+al_BUFFERS_PROCESSED                = CONST_AL_BUFFERS_PROCESSED+al_MIN_GAIN                         = CONST_AL_MIN_GAIN+al_MAX_GAIN                         = CONST_AL_MAX_GAIN+al_REFERENCE_DISTANCE               = CONST_AL_REFERENCE_DISTANCE+al_ROLLOFF_FACTOR                   = CONST_AL_ROLLOFF_FACTOR+al_MAX_DISTANCE                     = CONST_AL_MAX_DISTANCE+al_PITCH                            = CONST_AL_PITCH+al_DIRECTION                        = CONST_AL_DIRECTION+al_CONE_INNER_ANGLE                 = CONST_AL_CONE_INNER_ANGLE+al_CONE_OUTER_ANGLE                 = CONST_AL_CONE_OUTER_ANGLE+al_CONE_OUTER_GAIN                  = CONST_AL_CONE_OUTER_GAIN+al_SEC_OFFSET                       = CONST_AL_SEC_OFFSET+al_SAMPLE_OFFSET                    = CONST_AL_SAMPLE_OFFSET+al_BYTE_OFFSET                      = CONST_AL_BYTE_OFFSET+al_SOURCE_STATE                     = CONST_AL_SOURCE_STATE++al_UNDETERMINED, al_STATIC, al_STREAMING :: ALint+al_UNDETERMINED                     = CONST_AL_UNDETERMINED+al_STATIC                           = CONST_AL_STATIC+al_STREAMING                        = CONST_AL_STREAMING++al_INITIAL, al_PLAYING, al_PAUSED, al_STOPPED :: ALint+al_INITIAL                          = CONST_AL_INITIAL+al_PLAYING                          = CONST_AL_PLAYING+al_PAUSED                           = CONST_AL_PAUSED+al_STOPPED                          = CONST_AL_STOPPED++--------------------------------------------------------------------------------++al_FREQUENCY, al_SIZE, al_BITS, al_CHANNELS :: ALenum+al_FREQUENCY                        = CONST_AL_FREQUENCY+al_SIZE                             = CONST_AL_SIZE+al_BITS                             = CONST_AL_BITS+al_CHANNELS                         = CONST_AL_CHANNELS++al_FORMAT_MONO8, al_FORMAT_MONO16, al_FORMAT_STEREO8,+   al_FORMAT_STEREO16 :: ALenum+al_FORMAT_MONO8                     = CONST_AL_FORMAT_MONO8+al_FORMAT_MONO16                    = CONST_AL_FORMAT_MONO16+al_FORMAT_STEREO8                   = CONST_AL_FORMAT_STEREO8+al_FORMAT_STEREO16                  = CONST_AL_FORMAT_STEREO16++--------------------------------------------------------------------------------++alc_FALSE, alc_TRUE :: ALCboolean+alc_FALSE                           = CONST_ALC_FALSE+alc_TRUE                            = CONST_ALC_TRUE++alc_FREQUENCY, alc_REFRESH, alc_SYNC, alc_MONO_SOURCES,+   alc_STEREO_SOURCES :: ALCint+alc_FREQUENCY                       = CONST_ALC_FREQUENCY+alc_REFRESH                         = CONST_ALC_REFRESH+alc_SYNC                            = CONST_ALC_SYNC+alc_MONO_SOURCES                    = CONST_ALC_MONO_SOURCES+alc_STEREO_SOURCES                  = CONST_ALC_STEREO_SOURCES++alc_NO_ERROR, alc_INVALID_DEVICE, alc_INVALID_CONTEXT, alc_INVALID_ENUM,+   alc_INVALID_VALUE, alc_INVALID_OPERATION, alc_OUT_OF_MEMORY :: ALCenum+alc_NO_ERROR                        = CONST_ALC_NO_ERROR+alc_INVALID_DEVICE                  = CONST_ALC_INVALID_DEVICE+alc_INVALID_CONTEXT                 = CONST_ALC_INVALID_CONTEXT+alc_INVALID_ENUM                    = CONST_ALC_INVALID_ENUM+alc_INVALID_VALUE                   = CONST_ALC_INVALID_VALUE+alc_INVALID_OPERATION               = CONST_ALC_INVALID_OPERATION+alc_OUT_OF_MEMORY                   = CONST_ALC_OUT_OF_MEMORY++alc_DEFAULT_DEVICE_SPECIFIER, alc_DEVICE_SPECIFIER, alc_EXTENSIONS,+   alc_CAPTURE_DEFAULT_DEVICE_SPECIFIER, alc_CAPTURE_DEVICE_SPECIFIER :: ALCenum+alc_DEFAULT_DEVICE_SPECIFIER        = CONST_ALC_DEFAULT_DEVICE_SPECIFIER+alc_DEVICE_SPECIFIER                = CONST_ALC_DEVICE_SPECIFIER+alc_EXTENSIONS                      = CONST_ALC_EXTENSIONS+alc_CAPTURE_DEFAULT_DEVICE_SPECIFIER= CONST_ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+alc_CAPTURE_DEVICE_SPECIFIER        = CONST_ALC_CAPTURE_DEVICE_SPECIFIER++alc_ATTRIBUTES_SIZE, alc_ALL_ATTRIBUTES, alc_MAJOR_VERSION, alc_MINOR_VERSION,+   alc_CAPTURE_SAMPLES :: ALCenum+alc_ATTRIBUTES_SIZE                 = CONST_ALC_ATTRIBUTES_SIZE+alc_ALL_ATTRIBUTES                  = CONST_ALC_ALL_ATTRIBUTES+alc_MAJOR_VERSION                   = CONST_ALC_MAJOR_VERSION+alc_MINOR_VERSION                   = CONST_ALC_MINOR_VERSION+alc_CAPTURE_SAMPLES                 = CONST_ALC_CAPTURE_SAMPLES
+ config.guess view
@@ -0,0 +1,1497 @@+#! /bin/sh+# Attempt to guess a canonical system name.+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.++timestamp='2006-02-23'++# This file is free software; you can redistribute it and/or modify it+# under the terms of the GNU General Public License as published by+# the Free Software Foundation; either version 2 of the License, or+# (at your option) any later version.+#+# This program is distributed in the hope that it will be useful, but+# WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU+# General Public License for more details.+#+# You should have received a copy of the GNU General Public License+# along with this program; if not, write to the Free Software+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA+# 02110-1301, USA.+#+# As a special exception to the GNU General Public License, if you+# distribute this file as part of a program that contains a+# configuration script generated by Autoconf, you may include it under+# the same distribution terms that you use for the rest of that program.+++# Originally written by Per Bothner <per@bothner.com>.+# Please send patches to <config-patches@gnu.org>.  Submit a context+# diff and a properly formatted ChangeLog entry.+#+# This script attempts to guess a canonical system name similar to+# config.sub.  If it succeeds, it prints the system name on stdout, and+# exits with 0.  Otherwise, it exits with 1.+#+# The plan is that this can be called by configure scripts if you+# don't specify an explicit build system type.++me=`echo "$0" | sed -e 's,.*/,,'`++usage="\+Usage: $0 [OPTION]++Output the configuration name of the system \`$me' is run on.++Operation modes:+  -h, --help         print this help, then exit+  -t, --time-stamp   print date of last modification, then exit+  -v, --version      print version number, then exit++Report bugs and patches to <config-patches@gnu.org>."++version="\+GNU config.guess ($timestamp)++Originally written by Per Bothner.+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005+Free Software Foundation, Inc.++This is free software; see the source for copying conditions.  There is NO+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."++help="+Try \`$me --help' for more information."++# Parse command line+while test $# -gt 0 ; do+  case $1 in+    --time-stamp | --time* | -t )+       echo "$timestamp" ; exit ;;+    --version | -v )+       echo "$version" ; exit ;;+    --help | --h* | -h )+       echo "$usage"; exit ;;+    -- )     # Stop option processing+       shift; break ;;+    - )	# Use stdin as input.+       break ;;+    -* )+       echo "$me: invalid option $1$help" >&2+       exit 1 ;;+    * )+       break ;;+  esac+done++if test $# != 0; then+  echo "$me: too many arguments$help" >&2+  exit 1+fi++trap 'exit 1' 1 2 15++# CC_FOR_BUILD -- compiler used by this script. Note that the use of a+# compiler to aid in system detection is discouraged as it requires+# temporary files to be created and, as you can see below, it is a+# headache to deal with in a portable fashion.++# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still+# use `HOST_CC' if defined, but it is deprecated.++# Portable tmp directory creation inspired by the Autoconf team.++set_cc_for_build='+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;+: ${TMPDIR=/tmp} ;+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;+dummy=$tmp/dummy ;+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;+case $CC_FOR_BUILD,$HOST_CC,$CC in+ ,,)    echo "int x;" > $dummy.c ;+	for c in cc gcc c89 c99 ; do+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then+	     CC_FOR_BUILD="$c"; break ;+	  fi ;+	done ;+	if test x"$CC_FOR_BUILD" = x ; then+	  CC_FOR_BUILD=no_compiler_found ;+	fi+	;;+ ,,*)   CC_FOR_BUILD=$CC ;;+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;+esac ; set_cc_for_build= ;'++# This is needed to find uname on a Pyramid OSx when run in the BSD universe.+# (ghazi@noc.rutgers.edu 1994-08-24)+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then+	PATH=$PATH:/.attbin ; export PATH+fi++UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown++# Note: order is significant - the case branches are not exclusive.++case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in+    *:NetBSD:*:*)+	# NetBSD (nbsd) targets should (where applicable) match one or+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently+	# switched to ELF, *-*-netbsd* would select the old+	# object file format.  This provides both forward+	# compatibility and a consistent mechanism for selecting the+	# object file format.+	#+	# Note: NetBSD doesn't particularly care about the vendor+	# portion of the name.  We always set it to "unknown".+	sysctl="sysctl -n hw.machine_arch"+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`+	case "${UNAME_MACHINE_ARCH}" in+	    armeb) machine=armeb-unknown ;;+	    arm*) machine=arm-unknown ;;+	    sh3el) machine=shl-unknown ;;+	    sh3eb) machine=sh-unknown ;;+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;+	esac+	# The Operating System including object format, if it has switched+	# to ELF recently, or will in the future.+	case "${UNAME_MACHINE_ARCH}" in+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)+		eval $set_cc_for_build+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \+			| grep __ELF__ >/dev/null+		then+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).+		    # Return netbsd for either.  FIX?+		    os=netbsd+		else+		    os=netbsdelf+		fi+		;;+	    *)+	        os=netbsd+		;;+	esac+	# The OS release+	# Debian GNU/NetBSD machines have a different userland, and+	# thus, need a distinct triplet. However, they do not need+	# kernel version information, so it can be replaced with a+	# suitable tag, in the style of linux-gnu.+	case "${UNAME_VERSION}" in+	    Debian*)+		release='-gnu'+		;;+	    *)+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`+		;;+	esac+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:+	# contains redundant information, the shorter form:+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.+	echo "${machine}-${os}${release}"+	exit ;;+    *:OpenBSD:*:*)+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}+	exit ;;+    *:ekkoBSD:*:*)+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}+	exit ;;+    *:SolidBSD:*:*)+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}+	exit ;;+    macppc:MirBSD:*:*)+	echo powerppc-unknown-mirbsd${UNAME_RELEASE}+	exit ;;+    *:MirBSD:*:*)+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}+	exit ;;+    alpha:OSF1:*:*)+	case $UNAME_RELEASE in+	*4.0)+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`+		;;+	*5.*)+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`+		;;+	esac+	# According to Compaq, /usr/sbin/psrinfo has been available on+	# OSF/1 and Tru64 systems produced since 1995.  I hope that+	# covers most systems running today.  This code pipes the CPU+	# types through head -n 1, so we only detect the type of CPU 0.+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`+	case "$ALPHA_CPU_TYPE" in+	    "EV4 (21064)")+		UNAME_MACHINE="alpha" ;;+	    "EV4.5 (21064)")+		UNAME_MACHINE="alpha" ;;+	    "LCA4 (21066/21068)")+		UNAME_MACHINE="alpha" ;;+	    "EV5 (21164)")+		UNAME_MACHINE="alphaev5" ;;+	    "EV5.6 (21164A)")+		UNAME_MACHINE="alphaev56" ;;+	    "EV5.6 (21164PC)")+		UNAME_MACHINE="alphapca56" ;;+	    "EV5.7 (21164PC)")+		UNAME_MACHINE="alphapca57" ;;+	    "EV6 (21264)")+		UNAME_MACHINE="alphaev6" ;;+	    "EV6.7 (21264A)")+		UNAME_MACHINE="alphaev67" ;;+	    "EV6.8CB (21264C)")+		UNAME_MACHINE="alphaev68" ;;+	    "EV6.8AL (21264B)")+		UNAME_MACHINE="alphaev68" ;;+	    "EV6.8CX (21264D)")+		UNAME_MACHINE="alphaev68" ;;+	    "EV6.9A (21264/EV69A)")+		UNAME_MACHINE="alphaev69" ;;+	    "EV7 (21364)")+		UNAME_MACHINE="alphaev7" ;;+	    "EV7.9 (21364A)")+		UNAME_MACHINE="alphaev79" ;;+	esac+	# A Pn.n version is a patched version.+	# A Vn.n version is a released version.+	# A Tn.n version is a released field test version.+	# A Xn.n version is an unreleased experimental baselevel.+	# 1.2 uses "1.2" for uname -r.+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`+	exit ;;+    Alpha\ *:Windows_NT*:*)+	# How do we know it's Interix rather than the generic POSIX subsystem?+	# Should we change UNAME_MACHINE based on the output of uname instead+	# of the specific Alpha model?+	echo alpha-pc-interix+	exit ;;+    21064:Windows_NT:50:3)+	echo alpha-dec-winnt3.5+	exit ;;+    Amiga*:UNIX_System_V:4.0:*)+	echo m68k-unknown-sysv4+	exit ;;+    *:[Aa]miga[Oo][Ss]:*:*)+	echo ${UNAME_MACHINE}-unknown-amigaos+	exit ;;+    *:[Mm]orph[Oo][Ss]:*:*)+	echo ${UNAME_MACHINE}-unknown-morphos+	exit ;;+    *:OS/390:*:*)+	echo i370-ibm-openedition+	exit ;;+    *:z/VM:*:*)+	echo s390-ibm-zvmoe+	exit ;;+    *:OS400:*:*)+        echo powerpc-ibm-os400+	exit ;;+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)+	echo arm-acorn-riscix${UNAME_RELEASE}+	exit ;;+    arm:riscos:*:*|arm:RISCOS:*:*)+	echo arm-unknown-riscos+	exit ;;+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)+	echo hppa1.1-hitachi-hiuxmpp+	exit ;;+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.+	if test "`(/bin/universe) 2>/dev/null`" = att ; then+		echo pyramid-pyramid-sysv3+	else+		echo pyramid-pyramid-bsd+	fi+	exit ;;+    NILE*:*:*:dcosx)+	echo pyramid-pyramid-svr4+	exit ;;+    DRS?6000:unix:4.0:6*)+	echo sparc-icl-nx6+	exit ;;+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)+	case `/usr/bin/uname -p` in+	    sparc) echo sparc-icl-nx7; exit ;;+	esac ;;+    sun4H:SunOS:5.*:*)+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    i86pc:SunOS:5.*:*)+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    sun4*:SunOS:6*:*)+	# According to config.sub, this is the proper way to canonicalize+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but+	# it's likely to be more like Solaris than SunOS4.+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    sun4*:SunOS:*:*)+	case "`/usr/bin/arch -k`" in+	    Series*|S4*)+		UNAME_RELEASE=`uname -v`+		;;+	esac+	# Japanese Language versions have a version number like `4.1.3-JL'.+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`+	exit ;;+    sun3*:SunOS:*:*)+	echo m68k-sun-sunos${UNAME_RELEASE}+	exit ;;+    sun*:*:4.2BSD:*)+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3+	case "`/bin/arch`" in+	    sun3)+		echo m68k-sun-sunos${UNAME_RELEASE}+		;;+	    sun4)+		echo sparc-sun-sunos${UNAME_RELEASE}+		;;+	esac+	exit ;;+    aushp:SunOS:*:*)+	echo sparc-auspex-sunos${UNAME_RELEASE}+	exit ;;+    # The situation for MiNT is a little confusing.  The machine name+    # can be virtually everything (everything which is not+    # "atarist" or "atariste" at least should have a processor+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"+    # to the lowercase version "mint" (or "freemint").  Finally+    # the system name "TOS" denotes a system which is actually not+    # MiNT.  But MiNT is downward compatible to TOS, so this should+    # be no problem.+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)+        echo m68k-atari-mint${UNAME_RELEASE}+	exit ;;+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)+	echo m68k-atari-mint${UNAME_RELEASE}+        exit ;;+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)+        echo m68k-atari-mint${UNAME_RELEASE}+	exit ;;+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)+        echo m68k-milan-mint${UNAME_RELEASE}+        exit ;;+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)+        echo m68k-hades-mint${UNAME_RELEASE}+        exit ;;+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)+        echo m68k-unknown-mint${UNAME_RELEASE}+        exit ;;+    m68k:machten:*:*)+	echo m68k-apple-machten${UNAME_RELEASE}+	exit ;;+    powerpc:machten:*:*)+	echo powerpc-apple-machten${UNAME_RELEASE}+	exit ;;+    RISC*:Mach:*:*)+	echo mips-dec-mach_bsd4.3+	exit ;;+    RISC*:ULTRIX:*:*)+	echo mips-dec-ultrix${UNAME_RELEASE}+	exit ;;+    VAX*:ULTRIX*:*:*)+	echo vax-dec-ultrix${UNAME_RELEASE}+	exit ;;+    2020:CLIX:*:* | 2430:CLIX:*:*)+	echo clipper-intergraph-clix${UNAME_RELEASE}+	exit ;;+    mips:*:*:UMIPS | mips:*:*:RISCos)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+#ifdef __cplusplus+#include <stdio.h>  /* for printf() prototype */+	int main (int argc, char *argv[]) {+#else+	int main (argc, argv) int argc; char *argv[]; {+#endif+	#if defined (host_mips) && defined (MIPSEB)+	#if defined (SYSTYPE_SYSV)+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);+	#endif+	#if defined (SYSTYPE_SVR4)+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);+	#endif+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);+	#endif+	#endif+	  exit (-1);+	}+EOF+	$CC_FOR_BUILD -o $dummy $dummy.c &&+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&+	  SYSTEM_NAME=`$dummy $dummyarg` &&+	    { echo "$SYSTEM_NAME"; exit; }+	echo mips-mips-riscos${UNAME_RELEASE}+	exit ;;+    Motorola:PowerMAX_OS:*:*)+	echo powerpc-motorola-powermax+	exit ;;+    Motorola:*:4.3:PL8-*)+	echo powerpc-harris-powermax+	exit ;;+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)+	echo powerpc-harris-powermax+	exit ;;+    Night_Hawk:Power_UNIX:*:*)+	echo powerpc-harris-powerunix+	exit ;;+    m88k:CX/UX:7*:*)+	echo m88k-harris-cxux7+	exit ;;+    m88k:*:4*:R4*)+	echo m88k-motorola-sysv4+	exit ;;+    m88k:*:3*:R3*)+	echo m88k-motorola-sysv3+	exit ;;+    AViiON:dgux:*:*)+        # DG/UX returns AViiON for all architectures+        UNAME_PROCESSOR=`/usr/bin/uname -p`+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]+	then+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \+	       [ ${TARGET_BINARY_INTERFACE}x = x ]+	    then+		echo m88k-dg-dgux${UNAME_RELEASE}+	    else+		echo m88k-dg-dguxbcs${UNAME_RELEASE}+	    fi+	else+	    echo i586-dg-dgux${UNAME_RELEASE}+	fi+ 	exit ;;+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)+	echo m88k-dolphin-sysv3+	exit ;;+    M88*:*:R3*:*)+	# Delta 88k system running SVR3+	echo m88k-motorola-sysv3+	exit ;;+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)+	echo m88k-tektronix-sysv3+	exit ;;+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)+	echo m68k-tektronix-bsd+	exit ;;+    *:IRIX*:*:*)+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`+	exit ;;+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '+    i*86:AIX:*:*)+	echo i386-ibm-aix+	exit ;;+    ia64:AIX:*:*)+	if [ -x /usr/bin/oslevel ] ; then+		IBM_REV=`/usr/bin/oslevel`+	else+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}+	fi+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}+	exit ;;+    *:AIX:2:3)+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then+		eval $set_cc_for_build+		sed 's/^		//' << EOF >$dummy.c+		#include <sys/systemcfg.h>++		main()+			{+			if (!__power_pc())+				exit(1);+			puts("powerpc-ibm-aix3.2.5");+			exit(0);+			}+EOF+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`+		then+			echo "$SYSTEM_NAME"+		else+			echo rs6000-ibm-aix3.2.5+		fi+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then+		echo rs6000-ibm-aix3.2.4+	else+		echo rs6000-ibm-aix3.2+	fi+	exit ;;+    *:AIX:*:[45])+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then+		IBM_ARCH=rs6000+	else+		IBM_ARCH=powerpc+	fi+	if [ -x /usr/bin/oslevel ] ; then+		IBM_REV=`/usr/bin/oslevel`+	else+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}+	fi+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}+	exit ;;+    *:AIX:*:*)+	echo rs6000-ibm-aix+	exit ;;+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)+	echo romp-ibm-bsd4.4+	exit ;;+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to+	exit ;;                             # report: romp-ibm BSD 4.3+    *:BOSX:*:*)+	echo rs6000-bull-bosx+	exit ;;+    DPX/2?00:B.O.S.:*:*)+	echo m68k-bull-sysv3+	exit ;;+    9000/[34]??:4.3bsd:1.*:*)+	echo m68k-hp-bsd+	exit ;;+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)+	echo m68k-hp-bsd4.4+	exit ;;+    9000/[34678]??:HP-UX:*:*)+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`+	case "${UNAME_MACHINE}" in+	    9000/31? )            HP_ARCH=m68000 ;;+	    9000/[34]?? )         HP_ARCH=m68k ;;+	    9000/[678][0-9][0-9])+		if [ -x /usr/bin/getconf ]; then+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`+                    case "${sc_cpu_version}" in+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1+                      532)                      # CPU_PA_RISC2_0+                        case "${sc_kernel_bits}" in+                          32) HP_ARCH="hppa2.0n" ;;+                          64) HP_ARCH="hppa2.0w" ;;+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20+                        esac ;;+                    esac+		fi+		if [ "${HP_ARCH}" = "" ]; then+		    eval $set_cc_for_build+		    sed 's/^              //' << EOF >$dummy.c++              #define _HPUX_SOURCE+              #include <stdlib.h>+              #include <unistd.h>++              int main ()+              {+              #if defined(_SC_KERNEL_BITS)+                  long bits = sysconf(_SC_KERNEL_BITS);+              #endif+                  long cpu  = sysconf (_SC_CPU_VERSION);++                  switch (cpu)+              	{+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;+              	case CPU_PA_RISC2_0:+              #if defined(_SC_KERNEL_BITS)+              	    switch (bits)+              		{+              		case 64: puts ("hppa2.0w"); break;+              		case 32: puts ("hppa2.0n"); break;+              		default: puts ("hppa2.0"); break;+              		} break;+              #else  /* !defined(_SC_KERNEL_BITS) */+              	    puts ("hppa2.0"); break;+              #endif+              	default: puts ("hppa1.0"); break;+              	}+                  exit (0);+              }+EOF+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`+		    test -z "$HP_ARCH" && HP_ARCH=hppa+		fi ;;+	esac+	if [ ${HP_ARCH} = "hppa2.0w" ]+	then+	    eval $set_cc_for_build++	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler+	    # generating 64-bit code.  GNU and HP use different nomenclature:+	    #+	    # $ CC_FOR_BUILD=cc ./config.guess+	    # => hppa2.0w-hp-hpux11.23+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess+	    # => hppa64-hp-hpux11.23++	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |+		grep __LP64__ >/dev/null+	    then+		HP_ARCH="hppa2.0w"+	    else+		HP_ARCH="hppa64"+	    fi+	fi+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}+	exit ;;+    ia64:HP-UX:*:*)+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`+	echo ia64-hp-hpux${HPUX_REV}+	exit ;;+    3050*:HI-UX:*:*)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#include <unistd.h>+	int+	main ()+	{+	  long cpu = sysconf (_SC_CPU_VERSION);+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct+	     results, however.  */+	  if (CPU_IS_PA_RISC (cpu))+	    {+	      switch (cpu)+		{+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;+		  default: puts ("hppa-hitachi-hiuxwe2"); break;+		}+	    }+	  else if (CPU_IS_HP_MC68K (cpu))+	    puts ("m68k-hitachi-hiuxwe2");+	  else puts ("unknown-hitachi-hiuxwe2");+	  exit (0);+	}+EOF+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&+		{ echo "$SYSTEM_NAME"; exit; }+	echo unknown-hitachi-hiuxwe2+	exit ;;+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )+	echo hppa1.1-hp-bsd+	exit ;;+    9000/8??:4.3bsd:*:*)+	echo hppa1.0-hp-bsd+	exit ;;+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)+	echo hppa1.0-hp-mpeix+	exit ;;+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )+	echo hppa1.1-hp-osf+	exit ;;+    hp8??:OSF1:*:*)+	echo hppa1.0-hp-osf+	exit ;;+    i*86:OSF1:*:*)+	if [ -x /usr/sbin/sysversion ] ; then+	    echo ${UNAME_MACHINE}-unknown-osf1mk+	else+	    echo ${UNAME_MACHINE}-unknown-osf1+	fi+	exit ;;+    parisc*:Lites*:*:*)+	echo hppa1.1-hp-lites+	exit ;;+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)+	echo c1-convex-bsd+        exit ;;+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)+	if getsysinfo -f scalar_acc+	then echo c32-convex-bsd+	else echo c2-convex-bsd+	fi+        exit ;;+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)+	echo c34-convex-bsd+        exit ;;+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)+	echo c38-convex-bsd+        exit ;;+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)+	echo c4-convex-bsd+        exit ;;+    CRAY*Y-MP:*:*:*)+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*[A-Z]90:*:*:*)+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \+	      -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*TS:*:*:*)+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*T3E:*:*:*)+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    CRAY*SV1:*:*:*)+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    *:UNICOS/mp:*:*)+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'+	exit ;;+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"+        exit ;;+    5000:UNIX_System_V:4.*:*)+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"+	exit ;;+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}+	exit ;;+    sparc*:BSD/OS:*:*)+	echo sparc-unknown-bsdi${UNAME_RELEASE}+	exit ;;+    *:BSD/OS:*:*)+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}+	exit ;;+    *:FreeBSD:*:*)+	case ${UNAME_MACHINE} in+	    pc98)+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;+	    *)+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;+	esac+	exit ;;+    i*:CYGWIN*:*)+	echo ${UNAME_MACHINE}-pc-cygwin+	exit ;;+    i*:MINGW*:*)+	echo ${UNAME_MACHINE}-pc-mingw32+	exit ;;+    i*:MSYS_NT-*:*:*)+	echo ${UNAME_MACHINE}-pc-mingw32+	exit ;;+    i*:windows32*:*)+    	# uname -m includes "-pc" on this system.+    	echo ${UNAME_MACHINE}-mingw32+	exit ;;+    i*:PW*:*)+	echo ${UNAME_MACHINE}-pc-pw32+	exit ;;+    x86:Interix*:[345]*)+	echo i586-pc-interix${UNAME_RELEASE}+	exit ;;+    EM64T:Interix*:[345]*)+	echo x86_64-unknown-interix${UNAME_RELEASE}+	exit ;;+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)+	echo i${UNAME_MACHINE}-pc-mks+	exit ;;+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)+	# How do we know it's Interix rather than the generic POSIX subsystem?+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we+	# UNAME_MACHINE based on the output of uname instead of i386?+	echo i586-pc-interix+	exit ;;+    i*:UWIN*:*)+	echo ${UNAME_MACHINE}-pc-uwin+	exit ;;+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)+	echo x86_64-unknown-cygwin+	exit ;;+    p*:CYGWIN*:*)+	echo powerpcle-unknown-cygwin+	exit ;;+    prep*:SunOS:5.*:*)+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`+	exit ;;+    *:GNU:*:*)+	# the GNU system+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`+	exit ;;+    *:GNU/*:*:*)+	# other systems with GNU libc and userland+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu+	exit ;;+    i*86:Minix:*:*)+	echo ${UNAME_MACHINE}-pc-minix+	exit ;;+    arm*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    cris:Linux:*:*)+	echo cris-axis-linux-gnu+	exit ;;+    crisv32:Linux:*:*)+	echo crisv32-axis-linux-gnu+	exit ;;+    frv:Linux:*:*)+    	echo frv-unknown-linux-gnu+	exit ;;+    ia64:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    m32r*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    m68*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    mips:Linux:*:*)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#undef CPU+	#undef mips+	#undef mipsel+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)+	CPU=mipsel+	#else+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)+	CPU=mips+	#else+	CPU=+	#endif+	#endif+EOF+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '+	    /^CPU/{+		s: ::g+		p+	    }'`"+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }+	;;+    mips64:Linux:*:*)+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#undef CPU+	#undef mips64+	#undef mips64el+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)+	CPU=mips64el+	#else+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)+	CPU=mips64+	#else+	CPU=+	#endif+	#endif+EOF+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '+	    /^CPU/{+		s: ::g+		p+	    }'`"+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }+	;;+    or32:Linux:*:*)+	echo or32-unknown-linux-gnu+	exit ;;+    ppc:Linux:*:*)+	echo powerpc-unknown-linux-gnu+	exit ;;+    ppc64:Linux:*:*)+	echo powerpc64-unknown-linux-gnu+	exit ;;+    alpha:Linux:*:*)+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in+	  EV5)   UNAME_MACHINE=alphaev5 ;;+	  EV56)  UNAME_MACHINE=alphaev56 ;;+	  PCA56) UNAME_MACHINE=alphapca56 ;;+	  PCA57) UNAME_MACHINE=alphapca56 ;;+	  EV6)   UNAME_MACHINE=alphaev6 ;;+	  EV67)  UNAME_MACHINE=alphaev67 ;;+	  EV68*) UNAME_MACHINE=alphaev68 ;;+        esac+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}+	exit ;;+    parisc:Linux:*:* | hppa:Linux:*:*)+	# Look for CPU level+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;+	  *)    echo hppa-unknown-linux-gnu ;;+	esac+	exit ;;+    parisc64:Linux:*:* | hppa64:Linux:*:*)+	echo hppa64-unknown-linux-gnu+	exit ;;+    s390:Linux:*:* | s390x:Linux:*:*)+	echo ${UNAME_MACHINE}-ibm-linux+	exit ;;+    sh64*:Linux:*:*)+    	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    sh*:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    sparc:Linux:*:* | sparc64:Linux:*:*)+	echo ${UNAME_MACHINE}-unknown-linux-gnu+	exit ;;+    vax:Linux:*:*)+	echo ${UNAME_MACHINE}-dec-linux-gnu+	exit ;;+    x86_64:Linux:*:*)+	echo x86_64-unknown-linux-gnu+	exit ;;+    i*86:Linux:*:*)+	# The BFD linker knows what the default object file format is, so+	# first see if it will tell us. cd to the root directory to prevent+	# problems with other programs or directories called `ld' in the path.+	# Set LC_ALL=C to ensure ld outputs messages in English.+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \+			 | sed -ne '/supported targets:/!d+				    s/[ 	][ 	]*/ /g+				    s/.*supported targets: *//+				    s/ .*//+				    p'`+        case "$ld_supported_targets" in+	  elf32-i386)+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"+		;;+	  a.out-i386-linux)+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"+		exit ;;+	  coff-i386)+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"+		exit ;;+	  "")+		# Either a pre-BFD a.out linker (linux-gnuoldld) or+		# one that does not give us useful --help.+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"+		exit ;;+	esac+	# Determine whether the default compiler is a.out or elf+	eval $set_cc_for_build+	sed 's/^	//' << EOF >$dummy.c+	#include <features.h>+	#ifdef __ELF__+	# ifdef __GLIBC__+	#  if __GLIBC__ >= 2+	LIBC=gnu+	#  else+	LIBC=gnulibc1+	#  endif+	# else+	LIBC=gnulibc1+	# endif+	#else+	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun)+	LIBC=gnu+	#else+	LIBC=gnuaout+	#endif+	#endif+	#ifdef __dietlibc__+	LIBC=dietlibc+	#endif+EOF+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '+	    /^LIBC/{+		s: ::g+		p+	    }'`"+	test x"${LIBC}" != x && {+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"+		exit+	}+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }+	;;+    i*86:DYNIX/ptx:4*:*)+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.+	# earlier versions are messed up and put the nodename in both+	# sysname and nodename.+	echo i386-sequent-sysv4+	exit ;;+    i*86:UNIX_SV:4.2MP:2.*)+        # Unixware is an offshoot of SVR4, but it has its own version+        # number series starting with 2...+        # I am not positive that other SVR4 systems won't match this,+	# I just have to hope.  -- rms.+        # Use sysv4.2uw... so that sysv4* matches it.+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}+	exit ;;+    i*86:OS/2:*:*)+	# If we were able to find `uname', then EMX Unix compatibility+	# is probably installed.+	echo ${UNAME_MACHINE}-pc-os2-emx+	exit ;;+    i*86:XTS-300:*:STOP)+	echo ${UNAME_MACHINE}-unknown-stop+	exit ;;+    i*86:atheos:*:*)+	echo ${UNAME_MACHINE}-unknown-atheos+	exit ;;+    i*86:syllable:*:*)+	echo ${UNAME_MACHINE}-pc-syllable+	exit ;;+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)+	echo i386-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    i*86:*DOS:*:*)+	echo ${UNAME_MACHINE}-pc-msdosdjgpp+	exit ;;+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}+	else+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}+	fi+	exit ;;+    i*86:*:5:[678]*)+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.+	case `/bin/uname -X | grep "^Machine"` in+	    *486*)	     UNAME_MACHINE=i486 ;;+	    *Pentium)	     UNAME_MACHINE=i586 ;;+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;+	esac+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}+	exit ;;+    i*86:*:3.2:*)+	if test -f /usr/options/cb.name; then+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL+	elif /bin/uname -X 2>/dev/null >/dev/null ; then+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \+			&& UNAME_MACHINE=i586+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \+			&& UNAME_MACHINE=i686+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \+			&& UNAME_MACHINE=i686+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL+	else+		echo ${UNAME_MACHINE}-pc-sysv32+	fi+	exit ;;+    pc:*:*:*)+	# Left here for compatibility:+        # uname -m prints for DJGPP always 'pc', but it prints nothing about+        # the processor, so we play safe by assuming i386.+	echo i386-pc-msdosdjgpp+        exit ;;+    Intel:Mach:3*:*)+	echo i386-pc-mach3+	exit ;;+    paragon:*:*:*)+	echo i860-intel-osf1+	exit ;;+    i860:*:4.*:*) # i860-SVR4+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4+	else # Add other i860-SVR4 vendors below as they are discovered.+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4+	fi+	exit ;;+    mini*:CTIX:SYS*5:*)+	# "miniframe"+	echo m68010-convergent-sysv+	exit ;;+    mc68k:UNIX:SYSTEM5:3.51m)+	echo m68k-convergent-sysv+	exit ;;+    M680?0:D-NIX:5.3:*)+	echo m68k-diab-dnix+	exit ;;+    M68*:*:R3V[5678]*:*)+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)+	OS_REL=''+	test -r /etc/.relid \+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \+          && { echo i486-ncr-sysv4; exit; } ;;+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)+	echo m68k-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    mc68030:UNIX_System_V:4.*:*)+	echo m68k-atari-sysv4+	exit ;;+    TSUNAMI:LynxOS:2.*:*)+	echo sparc-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    rs6000:LynxOS:2.*:*)+	echo rs6000-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)+	echo powerpc-unknown-lynxos${UNAME_RELEASE}+	exit ;;+    SM[BE]S:UNIX_SV:*:*)+	echo mips-dde-sysv${UNAME_RELEASE}+	exit ;;+    RM*:ReliantUNIX-*:*:*)+	echo mips-sni-sysv4+	exit ;;+    RM*:SINIX-*:*:*)+	echo mips-sni-sysv4+	exit ;;+    *:SINIX-*:*:*)+	if uname -p 2>/dev/null >/dev/null ; then+		UNAME_MACHINE=`(uname -p) 2>/dev/null`+		echo ${UNAME_MACHINE}-sni-sysv4+	else+		echo ns32k-sni-sysv+	fi+	exit ;;+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort+                      # says <Richard.M.Bartel@ccMail.Census.GOV>+        echo i586-unisys-sysv4+        exit ;;+    *:UNIX_System_V:4*:FTX*)+	# From Gerald Hewes <hewes@openmarket.com>.+	# How about differentiating between stratus architectures? -djm+	echo hppa1.1-stratus-sysv4+	exit ;;+    *:*:*:FTX*)+	# From seanf@swdc.stratus.com.+	echo i860-stratus-sysv4+	exit ;;+    i*86:VOS:*:*)+	# From Paul.Green@stratus.com.+	echo ${UNAME_MACHINE}-stratus-vos+	exit ;;+    *:VOS:*:*)+	# From Paul.Green@stratus.com.+	echo hppa1.1-stratus-vos+	exit ;;+    mc68*:A/UX:*:*)+	echo m68k-apple-aux${UNAME_RELEASE}+	exit ;;+    news*:NEWS-OS:6*:*)+	echo mips-sony-newsos6+	exit ;;+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)+	if [ -d /usr/nec ]; then+	        echo mips-nec-sysv${UNAME_RELEASE}+	else+	        echo mips-unknown-sysv${UNAME_RELEASE}+	fi+        exit ;;+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.+	echo powerpc-be-beos+	exit ;;+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.+	echo powerpc-apple-beos+	exit ;;+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.+	echo i586-pc-beos+	exit ;;+    SX-4:SUPER-UX:*:*)+	echo sx4-nec-superux${UNAME_RELEASE}+	exit ;;+    SX-5:SUPER-UX:*:*)+	echo sx5-nec-superux${UNAME_RELEASE}+	exit ;;+    SX-6:SUPER-UX:*:*)+	echo sx6-nec-superux${UNAME_RELEASE}+	exit ;;+    Power*:Rhapsody:*:*)+	echo powerpc-apple-rhapsody${UNAME_RELEASE}+	exit ;;+    *:Rhapsody:*:*)+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}+	exit ;;+    *:Darwin:*:*)+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown+	case $UNAME_PROCESSOR in+	    unknown) UNAME_PROCESSOR=powerpc ;;+	esac+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}+	exit ;;+    *:procnto*:*:* | *:QNX:[0123456789]*:*)+	UNAME_PROCESSOR=`uname -p`+	if test "$UNAME_PROCESSOR" = "x86"; then+		UNAME_PROCESSOR=i386+		UNAME_MACHINE=pc+	fi+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}+	exit ;;+    *:QNX:*:4*)+	echo i386-pc-qnx+	exit ;;+    NSE-?:NONSTOP_KERNEL:*:*)+	echo nse-tandem-nsk${UNAME_RELEASE}+	exit ;;+    NSR-?:NONSTOP_KERNEL:*:*)+	echo nsr-tandem-nsk${UNAME_RELEASE}+	exit ;;+    *:NonStop-UX:*:*)+	echo mips-compaq-nonstopux+	exit ;;+    BS2000:POSIX*:*:*)+	echo bs2000-siemens-sysv+	exit ;;+    DS/*:UNIX_System_V:*:*)+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}+	exit ;;+    *:Plan9:*:*)+	# "uname -m" is not consistent, so use $cputype instead. 386+	# is converted to i386 for consistency with other x86+	# operating systems.+	if test "$cputype" = "386"; then+	    UNAME_MACHINE=i386+	else+	    UNAME_MACHINE="$cputype"+	fi+	echo ${UNAME_MACHINE}-unknown-plan9+	exit ;;+    *:TOPS-10:*:*)+	echo pdp10-unknown-tops10+	exit ;;+    *:TENEX:*:*)+	echo pdp10-unknown-tenex+	exit ;;+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)+	echo pdp10-dec-tops20+	exit ;;+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)+	echo pdp10-xkl-tops20+	exit ;;+    *:TOPS-20:*:*)+	echo pdp10-unknown-tops20+	exit ;;+    *:ITS:*:*)+	echo pdp10-unknown-its+	exit ;;+    SEI:*:*:SEIUX)+        echo mips-sei-seiux${UNAME_RELEASE}+	exit ;;+    *:DragonFly:*:*)+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`+	exit ;;+    *:*VMS:*:*)+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`+	case "${UNAME_MACHINE}" in+	    A*) echo alpha-dec-vms ; exit ;;+	    I*) echo ia64-dec-vms ; exit ;;+	    V*) echo vax-dec-vms ; exit ;;+	esac ;;+    *:XENIX:*:SysV)+	echo i386-pc-xenix+	exit ;;+    i*86:skyos:*:*)+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'+	exit ;;+    i*86:rdos:*:*)+	echo ${UNAME_MACHINE}-pc-rdos+	exit ;;+esac++#echo '(No uname command or uname output not recognized.)' 1>&2+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2++eval $set_cc_for_build+cat >$dummy.c <<EOF+#ifdef _SEQUENT_+# include <sys/types.h>+# include <sys/utsname.h>+#endif+main ()+{+#if defined (sony)+#if defined (MIPSEB)+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,+     I don't know....  */+  printf ("mips-sony-bsd\n"); exit (0);+#else+#include <sys/param.h>+  printf ("m68k-sony-newsos%s\n",+#ifdef NEWSOS4+          "4"+#else+	  ""+#endif+         ); exit (0);+#endif+#endif++#if defined (__arm) && defined (__acorn) && defined (__unix)+  printf ("arm-acorn-riscix\n"); exit (0);+#endif++#if defined (hp300) && !defined (hpux)+  printf ("m68k-hp-bsd\n"); exit (0);+#endif++#if defined (NeXT)+#if !defined (__ARCHITECTURE__)+#define __ARCHITECTURE__ "m68k"+#endif+  int version;+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;+  if (version < 4)+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);+  else+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);+  exit (0);+#endif++#if defined (MULTIMAX) || defined (n16)+#if defined (UMAXV)+  printf ("ns32k-encore-sysv\n"); exit (0);+#else+#if defined (CMU)+  printf ("ns32k-encore-mach\n"); exit (0);+#else+  printf ("ns32k-encore-bsd\n"); exit (0);+#endif+#endif+#endif++#if defined (__386BSD__)+  printf ("i386-pc-bsd\n"); exit (0);+#endif++#if defined (sequent)+#if defined (i386)+  printf ("i386-sequent-dynix\n"); exit (0);+#endif+#if defined (ns32000)+  printf ("ns32k-sequent-dynix\n"); exit (0);+#endif+#endif++#if defined (_SEQUENT_)+    struct utsname un;++    uname(&un);++    if (strncmp(un.version, "V2", 2) == 0) {+	printf ("i386-sequent-ptx2\n"); exit (0);+    }+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */+	printf ("i386-sequent-ptx1\n"); exit (0);+    }+    printf ("i386-sequent-ptx\n"); exit (0);++#endif++#if defined (vax)+# if !defined (ultrix)+#  include <sys/param.h>+#  if defined (BSD)+#   if BSD == 43+      printf ("vax-dec-bsd4.3\n"); exit (0);+#   else+#    if BSD == 199006+      printf ("vax-dec-bsd4.3reno\n"); exit (0);+#    else+      printf ("vax-dec-bsd\n"); exit (0);+#    endif+#   endif+#  else+    printf ("vax-dec-bsd\n"); exit (0);+#  endif+# else+    printf ("vax-dec-ultrix\n"); exit (0);+# endif+#endif++#if defined (alliant) && defined (i860)+  printf ("i860-alliant-bsd\n"); exit (0);+#endif++  exit (1);+}+EOF++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&+	{ echo "$SYSTEM_NAME"; exit; }++# Apollos put the system type in the environment.++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }++# Convex versions that predate uname can use getsysinfo(1)++if [ -x /usr/convex/getsysinfo ]+then+    case `getsysinfo -f cpu_type` in+    c1*)+	echo c1-convex-bsd+	exit ;;+    c2*)+	if getsysinfo -f scalar_acc+	then echo c32-convex-bsd+	else echo c2-convex-bsd+	fi+	exit ;;+    c34*)+	echo c34-convex-bsd+	exit ;;+    c38*)+	echo c38-convex-bsd+	exit ;;+    c4*)+	echo c4-convex-bsd+	exit ;;+    esac+fi++cat >&2 <<EOF+$0: unable to guess system type++This script, last modified $timestamp, has failed to recognize+the operating system you are using. It is advised that you+download the most up to date version of the config scripts from++  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess+and+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub++If the version you run ($0) is already up to date, please+send the following data and any information you think might be+pertinent to <config-patches@gnu.org> in order to provide the needed+information to handle your system.++config.guess timestamp = $timestamp++uname -m = `(uname -m) 2>/dev/null || echo unknown`+uname -r = `(uname -r) 2>/dev/null || echo unknown`+uname -s = `(uname -s) 2>/dev/null || echo unknown`+uname -v = `(uname -v) 2>/dev/null || echo unknown`++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`++hostinfo               = `(hostinfo) 2>/dev/null`+/bin/universe          = `(/bin/universe) 2>/dev/null`+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`+/bin/arch              = `(/bin/arch) 2>/dev/null`+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`++UNAME_MACHINE = ${UNAME_MACHINE}+UNAME_RELEASE = ${UNAME_RELEASE}+UNAME_SYSTEM  = ${UNAME_SYSTEM}+UNAME_VERSION = ${UNAME_VERSION}+EOF++exit 1++# Local variables:+# eval: (add-hook 'write-file-hooks 'time-stamp)+# time-stamp-start: "timestamp='"+# time-stamp-format: "%:y-%02m-%02d"+# time-stamp-end: "'"+# End:
+ config.mk.in view
@@ -0,0 +1,8 @@+AL_BUILD_PACKAGE=@AL_BUILD_PACKAGE@+ifneq "$(AL_BUILD_PACKAGE)" "no"+AL_LIBS=@AL_LIBS@+AL_FRAMEWORKS=@AL_FRAMEWORKS@+PACKAGE=@PACKAGE_TARNAME@+VERSION=@PACKAGE_VERSION@+MAINTAINER=@PACKAGE_BUGREPORT@+endif
+ config.sub view
@@ -0,0 +1,1608 @@+#! /bin/sh+# Configuration validation subroutine script.+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.++timestamp='2006-02-23'++# This file is (in principle) common to ALL GNU software.+# The presence of a machine in this file suggests that SOME GNU software+# can handle that machine.  It does not imply ALL GNU software can.+#+# This file is free software; you can redistribute it and/or modify+# it under the terms of the GNU General Public License as published by+# the Free Software Foundation; either version 2 of the License, or+# (at your option) any later version.+#+# This program is distributed in the hope that it will be useful,+# but WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+# GNU General Public License for more details.+#+# You should have received a copy of the GNU General Public License+# along with this program; if not, write to the Free Software+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA+# 02110-1301, USA.+#+# As a special exception to the GNU General Public License, if you+# distribute this file as part of a program that contains a+# configuration script generated by Autoconf, you may include it under+# the same distribution terms that you use for the rest of that program.+++# Please send patches to <config-patches@gnu.org>.  Submit a context+# diff and a properly formatted ChangeLog entry.+#+# Configuration subroutine to validate and canonicalize a configuration type.+# Supply the specified configuration type as an argument.+# If it is invalid, we print an error message on stderr and exit with code 1.+# Otherwise, we print the canonical config type on stdout and succeed.++# This file is supposed to be the same for all GNU packages+# and recognize all the CPU types, system types and aliases+# that are meaningful with *any* GNU software.+# Each package is responsible for reporting which valid configurations+# it does not support.  The user should be able to distinguish+# a failure to support a valid configuration from a meaningless+# configuration.++# The goal of this file is to map all the various variations of a given+# machine specification into a single specification in the form:+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM+# or in some cases, the newer four-part form:+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM+# It is wrong to echo any other type of specification.++me=`echo "$0" | sed -e 's,.*/,,'`++usage="\+Usage: $0 [OPTION] CPU-MFR-OPSYS+       $0 [OPTION] ALIAS++Canonicalize a configuration name.++Operation modes:+  -h, --help         print this help, then exit+  -t, --time-stamp   print date of last modification, then exit+  -v, --version      print version number, then exit++Report bugs and patches to <config-patches@gnu.org>."++version="\+GNU config.sub ($timestamp)++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005+Free Software Foundation, Inc.++This is free software; see the source for copying conditions.  There is NO+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."++help="+Try \`$me --help' for more information."++# Parse command line+while test $# -gt 0 ; do+  case $1 in+    --time-stamp | --time* | -t )+       echo "$timestamp" ; exit ;;+    --version | -v )+       echo "$version" ; exit ;;+    --help | --h* | -h )+       echo "$usage"; exit ;;+    -- )     # Stop option processing+       shift; break ;;+    - )	# Use stdin as input.+       break ;;+    -* )+       echo "$me: invalid option $1$help"+       exit 1 ;;++    *local*)+       # First pass through any local machine types.+       echo $1+       exit ;;++    * )+       break ;;+  esac+done++case $# in+ 0) echo "$me: missing argument$help" >&2+    exit 1;;+ 1) ;;+ *) echo "$me: too many arguments$help" >&2+    exit 1;;+esac++# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).+# Here we must recognize all the valid KERNEL-OS combinations.+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`+case $maybe_os in+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \+  storm-chaos* | os2-emx* | rtmk-nova*)+    os=-$maybe_os+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`+    ;;+  *)+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`+    if [ $basic_machine != $1 ]+    then os=`echo $1 | sed 's/.*-/-/'`+    else os=; fi+    ;;+esac++### Let's recognize common machines as not being operating systems so+### that things like config.sub decstation-3100 work.  We also+### recognize some manufacturers as not being operating systems, so we+### can provide default operating systems below.+case $os in+	-sun*os*)+		# Prevent following clause from handling this invalid input.+		;;+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \+	-apple | -axis | -knuth | -cray)+		os=+		basic_machine=$1+		;;+	-sim | -cisco | -oki | -wec | -winbond)+		os=+		basic_machine=$1+		;;+	-scout)+		;;+	-wrs)+		os=-vxworks+		basic_machine=$1+		;;+	-chorusos*)+		os=-chorusos+		basic_machine=$1+		;;+ 	-chorusrdb)+ 		os=-chorusrdb+		basic_machine=$1+ 		;;+	-hiux*)+		os=-hiuxwe2+		;;+	-sco6)+		os=-sco5v6+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco5)+		os=-sco3.2v5+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco4)+		os=-sco3.2v4+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco3.2.[4-9]*)+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco3.2v[4-9]*)+		# Don't forget version if it is 3.2v4 or newer.+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco5v6*)+		# Don't forget version if it is 3.2v4 or newer.+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-sco*)+		os=-sco3.2v2+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-udk*)+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-isc)+		os=-isc2.2+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-clix*)+		basic_machine=clipper-intergraph+		;;+	-isc*)+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`+		;;+	-lynx*)+		os=-lynxos+		;;+	-ptx*)+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`+		;;+	-windowsnt*)+		os=`echo $os | sed -e 's/windowsnt/winnt/'`+		;;+	-psos*)+		os=-psos+		;;+	-mint | -mint[0-9]*)+		basic_machine=m68k-atari+		os=-mint+		;;+esac++# Decode aliases for certain CPU-COMPANY combinations.+case $basic_machine in+	# Recognize the basic CPU types without company name.+	# Some are omitted here because they have special meanings below.+	1750a | 580 \+	| a29k \+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \+	| am33_2.0 \+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \+	| bfin \+	| c4x | clipper \+	| d10v | d30v | dlx | dsp16xx \+	| fr30 | frv \+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \+	| i370 | i860 | i960 | ia64 \+	| ip2k | iq2000 \+	| m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \+	| mips | mipsbe | mipseb | mipsel | mipsle \+	| mips16 \+	| mips64 | mips64el \+	| mips64vr | mips64vrel \+	| mips64orion | mips64orionel \+	| mips64vr4100 | mips64vr4100el \+	| mips64vr4300 | mips64vr4300el \+	| mips64vr5000 | mips64vr5000el \+	| mips64vr5900 | mips64vr5900el \+	| mipsisa32 | mipsisa32el \+	| mipsisa32r2 | mipsisa32r2el \+	| mipsisa64 | mipsisa64el \+	| mipsisa64r2 | mipsisa64r2el \+	| mipsisa64sb1 | mipsisa64sb1el \+	| mipsisa64sr71k | mipsisa64sr71kel \+	| mipstx39 | mipstx39el \+	| mn10200 | mn10300 \+	| mt \+	| msp430 \+	| nios | nios2 \+	| ns16k | ns32k \+	| or32 \+	| pdp10 | pdp11 | pj | pjl \+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \+	| pyramid \+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \+	| sh64 | sh64le \+	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \+	| sparcv8 | sparcv9 | sparcv9b \+	| strongarm \+	| tahoe | thumb | tic4x | tic80 | tron \+	| v850 | v850e \+	| we32k \+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \+	| z8k)+		basic_machine=$basic_machine-unknown+		;;+	m32c)+		basic_machine=$basic_machine-unknown+		;;+	m6811 | m68hc11 | m6812 | m68hc12)+		# Motorola 68HC11/12.+		basic_machine=$basic_machine-unknown+		os=-none+		;;+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)+		;;+	ms1)+		basic_machine=mt-unknown+		;;++	# We use `pc' rather than `unknown'+	# because (1) that's what they normally are, and+	# (2) the word "unknown" tends to confuse beginning users.+	i*86 | x86_64)+	  basic_machine=$basic_machine-pc+	  ;;+	# Object if more than one company name word.+	*-*-*)+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2+		exit 1+		;;+	# Recognize the basic CPU types with company name.+	580-* \+	| a29k-* \+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \+	| avr-* \+	| bfin-* | bs2000-* \+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \+	| clipper-* | craynv-* | cydra-* \+	| d10v-* | d30v-* | dlx-* \+	| elxsi-* \+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \+	| h8300-* | h8500-* \+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \+	| i*86-* | i860-* | i960-* | ia64-* \+	| ip2k-* | iq2000-* \+	| m32r-* | m32rle-* \+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \+	| m88110-* | m88k-* | maxq-* | mcore-* \+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \+	| mips16-* \+	| mips64-* | mips64el-* \+	| mips64vr-* | mips64vrel-* \+	| mips64orion-* | mips64orionel-* \+	| mips64vr4100-* | mips64vr4100el-* \+	| mips64vr4300-* | mips64vr4300el-* \+	| mips64vr5000-* | mips64vr5000el-* \+	| mips64vr5900-* | mips64vr5900el-* \+	| mipsisa32-* | mipsisa32el-* \+	| mipsisa32r2-* | mipsisa32r2el-* \+	| mipsisa64-* | mipsisa64el-* \+	| mipsisa64r2-* | mipsisa64r2el-* \+	| mipsisa64sb1-* | mipsisa64sb1el-* \+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \+	| mipstx39-* | mipstx39el-* \+	| mmix-* \+	| mt-* \+	| msp430-* \+	| nios-* | nios2-* \+	| none-* | np1-* | ns16k-* | ns32k-* \+	| orion-* \+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \+	| pyramid-* \+	| romp-* | rs6000-* \+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \+	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \+	| sparclite-* \+	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \+	| tahoe-* | thumb-* \+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \+	| tron-* \+	| v850-* | v850e-* | vax-* \+	| we32k-* \+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \+	| xstormy16-* | xtensa-* \+	| ymp-* \+	| z8k-*)+		;;+	m32c-*)+		;;+	# Recognize the various machine names and aliases which stand+	# for a CPU type and a company and sometimes even an OS.+	386bsd)+		basic_machine=i386-unknown+		os=-bsd+		;;+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)+		basic_machine=m68000-att+		;;+	3b*)+		basic_machine=we32k-att+		;;+	a29khif)+		basic_machine=a29k-amd+		os=-udi+		;;+    	abacus)+		basic_machine=abacus-unknown+		;;+	adobe68k)+		basic_machine=m68010-adobe+		os=-scout+		;;+	alliant | fx80)+		basic_machine=fx80-alliant+		;;+	altos | altos3068)+		basic_machine=m68k-altos+		;;+	am29k)+		basic_machine=a29k-none+		os=-bsd+		;;+	amd64)+		basic_machine=x86_64-pc+		;;+	amd64-*)+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	amdahl)+		basic_machine=580-amdahl+		os=-sysv+		;;+	amiga | amiga-*)+		basic_machine=m68k-unknown+		;;+	amigaos | amigados)+		basic_machine=m68k-unknown+		os=-amigaos+		;;+	amigaunix | amix)+		basic_machine=m68k-unknown+		os=-sysv4+		;;+	apollo68)+		basic_machine=m68k-apollo+		os=-sysv+		;;+	apollo68bsd)+		basic_machine=m68k-apollo+		os=-bsd+		;;+	aux)+		basic_machine=m68k-apple+		os=-aux+		;;+	balance)+		basic_machine=ns32k-sequent+		os=-dynix+		;;+	c90)+		basic_machine=c90-cray+		os=-unicos+		;;+	convex-c1)+		basic_machine=c1-convex+		os=-bsd+		;;+	convex-c2)+		basic_machine=c2-convex+		os=-bsd+		;;+	convex-c32)+		basic_machine=c32-convex+		os=-bsd+		;;+	convex-c34)+		basic_machine=c34-convex+		os=-bsd+		;;+	convex-c38)+		basic_machine=c38-convex+		os=-bsd+		;;+	cray | j90)+		basic_machine=j90-cray+		os=-unicos+		;;+	craynv)+		basic_machine=craynv-cray+		os=-unicosmp+		;;+	cr16c)+		basic_machine=cr16c-unknown+		os=-elf+		;;+	crds | unos)+		basic_machine=m68k-crds+		;;+	crisv32 | crisv32-* | etraxfs*)+		basic_machine=crisv32-axis+		;;+	cris | cris-* | etrax*)+		basic_machine=cris-axis+		;;+	crx)+		basic_machine=crx-unknown+		os=-elf+		;;+	da30 | da30-*)+		basic_machine=m68k-da30+		;;+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)+		basic_machine=mips-dec+		;;+	decsystem10* | dec10*)+		basic_machine=pdp10-dec+		os=-tops10+		;;+	decsystem20* | dec20*)+		basic_machine=pdp10-dec+		os=-tops20+		;;+	delta | 3300 | motorola-3300 | motorola-delta \+	      | 3300-motorola | delta-motorola)+		basic_machine=m68k-motorola+		;;+	delta88)+		basic_machine=m88k-motorola+		os=-sysv3+		;;+	djgpp)+		basic_machine=i586-pc+		os=-msdosdjgpp+		;;+	dpx20 | dpx20-*)+		basic_machine=rs6000-bull+		os=-bosx+		;;+	dpx2* | dpx2*-bull)+		basic_machine=m68k-bull+		os=-sysv3+		;;+	ebmon29k)+		basic_machine=a29k-amd+		os=-ebmon+		;;+	elxsi)+		basic_machine=elxsi-elxsi+		os=-bsd+		;;+	encore | umax | mmax)+		basic_machine=ns32k-encore+		;;+	es1800 | OSE68k | ose68k | ose | OSE)+		basic_machine=m68k-ericsson+		os=-ose+		;;+	fx2800)+		basic_machine=i860-alliant+		;;+	genix)+		basic_machine=ns32k-ns+		;;+	gmicro)+		basic_machine=tron-gmicro+		os=-sysv+		;;+	go32)+		basic_machine=i386-pc+		os=-go32+		;;+	h3050r* | hiux*)+		basic_machine=hppa1.1-hitachi+		os=-hiuxwe2+		;;+	h8300hms)+		basic_machine=h8300-hitachi+		os=-hms+		;;+	h8300xray)+		basic_machine=h8300-hitachi+		os=-xray+		;;+	h8500hms)+		basic_machine=h8500-hitachi+		os=-hms+		;;+	harris)+		basic_machine=m88k-harris+		os=-sysv3+		;;+	hp300-*)+		basic_machine=m68k-hp+		;;+	hp300bsd)+		basic_machine=m68k-hp+		os=-bsd+		;;+	hp300hpux)+		basic_machine=m68k-hp+		os=-hpux+		;;+	hp3k9[0-9][0-9] | hp9[0-9][0-9])+		basic_machine=hppa1.0-hp+		;;+	hp9k2[0-9][0-9] | hp9k31[0-9])+		basic_machine=m68000-hp+		;;+	hp9k3[2-9][0-9])+		basic_machine=m68k-hp+		;;+	hp9k6[0-9][0-9] | hp6[0-9][0-9])+		basic_machine=hppa1.0-hp+		;;+	hp9k7[0-79][0-9] | hp7[0-79][0-9])+		basic_machine=hppa1.1-hp+		;;+	hp9k78[0-9] | hp78[0-9])+		# FIXME: really hppa2.0-hp+		basic_machine=hppa1.1-hp+		;;+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)+		# FIXME: really hppa2.0-hp+		basic_machine=hppa1.1-hp+		;;+	hp9k8[0-9][13679] | hp8[0-9][13679])+		basic_machine=hppa1.1-hp+		;;+	hp9k8[0-9][0-9] | hp8[0-9][0-9])+		basic_machine=hppa1.0-hp+		;;+	hppa-next)+		os=-nextstep3+		;;+	hppaosf)+		basic_machine=hppa1.1-hp+		os=-osf+		;;+	hppro)+		basic_machine=hppa1.1-hp+		os=-proelf+		;;+	i370-ibm* | ibm*)+		basic_machine=i370-ibm+		;;+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?+	i*86v32)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-sysv32+		;;+	i*86v4*)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-sysv4+		;;+	i*86v)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-sysv+		;;+	i*86sol2)+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`+		os=-solaris2+		;;+	i386mach)+		basic_machine=i386-mach+		os=-mach+		;;+	i386-vsta | vsta)+		basic_machine=i386-unknown+		os=-vsta+		;;+	iris | iris4d)+		basic_machine=mips-sgi+		case $os in+		    -irix*)+			;;+		    *)+			os=-irix4+			;;+		esac+		;;+	isi68 | isi)+		basic_machine=m68k-isi+		os=-sysv+		;;+	m88k-omron*)+		basic_machine=m88k-omron+		;;+	magnum | m3230)+		basic_machine=mips-mips+		os=-sysv+		;;+	merlin)+		basic_machine=ns32k-utek+		os=-sysv+		;;+	mingw32)+		basic_machine=i386-pc+		os=-mingw32+		;;+	miniframe)+		basic_machine=m68000-convergent+		;;+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)+		basic_machine=m68k-atari+		os=-mint+		;;+	mips3*-*)+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`+		;;+	mips3*)+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown+		;;+	monitor)+		basic_machine=m68k-rom68k+		os=-coff+		;;+	morphos)+		basic_machine=powerpc-unknown+		os=-morphos+		;;+	msdos)+		basic_machine=i386-pc+		os=-msdos+		;;+	ms1-*)+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`+		;;+	mvs)+		basic_machine=i370-ibm+		os=-mvs+		;;+	ncr3000)+		basic_machine=i486-ncr+		os=-sysv4+		;;+	netbsd386)+		basic_machine=i386-unknown+		os=-netbsd+		;;+	netwinder)+		basic_machine=armv4l-rebel+		os=-linux+		;;+	news | news700 | news800 | news900)+		basic_machine=m68k-sony+		os=-newsos+		;;+	news1000)+		basic_machine=m68030-sony+		os=-newsos+		;;+	news-3600 | risc-news)+		basic_machine=mips-sony+		os=-newsos+		;;+	necv70)+		basic_machine=v70-nec+		os=-sysv+		;;+	next | m*-next )+		basic_machine=m68k-next+		case $os in+		    -nextstep* )+			;;+		    -ns2*)+		      os=-nextstep2+			;;+		    *)+		      os=-nextstep3+			;;+		esac+		;;+	nh3000)+		basic_machine=m68k-harris+		os=-cxux+		;;+	nh[45]000)+		basic_machine=m88k-harris+		os=-cxux+		;;+	nindy960)+		basic_machine=i960-intel+		os=-nindy+		;;+	mon960)+		basic_machine=i960-intel+		os=-mon960+		;;+	nonstopux)+		basic_machine=mips-compaq+		os=-nonstopux+		;;+	np1)+		basic_machine=np1-gould+		;;+	nsr-tandem)+		basic_machine=nsr-tandem+		;;+	op50n-* | op60c-*)+		basic_machine=hppa1.1-oki+		os=-proelf+		;;+	openrisc | openrisc-*)+		basic_machine=or32-unknown+		;;+	os400)+		basic_machine=powerpc-ibm+		os=-os400+		;;+	OSE68000 | ose68000)+		basic_machine=m68000-ericsson+		os=-ose+		;;+	os68k)+		basic_machine=m68k-none+		os=-os68k+		;;+	pa-hitachi)+		basic_machine=hppa1.1-hitachi+		os=-hiuxwe2+		;;+	paragon)+		basic_machine=i860-intel+		os=-osf+		;;+	pbd)+		basic_machine=sparc-tti+		;;+	pbb)+		basic_machine=m68k-tti+		;;+	pc532 | pc532-*)+		basic_machine=ns32k-pc532+		;;+	pc98)+		basic_machine=i386-pc+		;;+	pc98-*)+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentium | p5 | k5 | k6 | nexgen | viac3)+		basic_machine=i586-pc+		;;+	pentiumpro | p6 | 6x86 | athlon | athlon_*)+		basic_machine=i686-pc+		;;+	pentiumii | pentium2 | pentiumiii | pentium3)+		basic_machine=i686-pc+		;;+	pentium4)+		basic_machine=i786-pc+		;;+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentiumpro-* | p6-* | 6x86-* | athlon-*)+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pentium4-*)+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	pn)+		basic_machine=pn-gould+		;;+	power)	basic_machine=power-ibm+		;;+	ppc)	basic_machine=powerpc-unknown+		;;+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ppcle | powerpclittle | ppc-le | powerpc-little)+		basic_machine=powerpcle-unknown+		;;+	ppcle-* | powerpclittle-*)+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ppc64)	basic_machine=powerpc64-unknown+		;;+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)+		basic_machine=powerpc64le-unknown+		;;+	ppc64le-* | powerpc64little-*)+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`+		;;+	ps2)+		basic_machine=i386-ibm+		;;+	pw32)+		basic_machine=i586-unknown+		os=-pw32+		;;+	rdos)+		basic_machine=i386-pc+		os=-rdos+		;;+	rom68k)+		basic_machine=m68k-rom68k+		os=-coff+		;;+	rm[46]00)+		basic_machine=mips-siemens+		;;+	rtpc | rtpc-*)+		basic_machine=romp-ibm+		;;+	s390 | s390-*)+		basic_machine=s390-ibm+		;;+	s390x | s390x-*)+		basic_machine=s390x-ibm+		;;+	sa29200)+		basic_machine=a29k-amd+		os=-udi+		;;+	sb1)+		basic_machine=mipsisa64sb1-unknown+		;;+	sb1el)+		basic_machine=mipsisa64sb1el-unknown+		;;+	sei)+		basic_machine=mips-sei+		os=-seiux+		;;+	sequent)+		basic_machine=i386-sequent+		;;+	sh)+		basic_machine=sh-hitachi+		os=-hms+		;;+	sh64)+		basic_machine=sh64-unknown+		;;+	sparclite-wrs | simso-wrs)+		basic_machine=sparclite-wrs+		os=-vxworks+		;;+	sps7)+		basic_machine=m68k-bull+		os=-sysv2+		;;+	spur)+		basic_machine=spur-unknown+		;;+	st2000)+		basic_machine=m68k-tandem+		;;+	stratus)+		basic_machine=i860-stratus+		os=-sysv4+		;;+	sun2)+		basic_machine=m68000-sun+		;;+	sun2os3)+		basic_machine=m68000-sun+		os=-sunos3+		;;+	sun2os4)+		basic_machine=m68000-sun+		os=-sunos4+		;;+	sun3os3)+		basic_machine=m68k-sun+		os=-sunos3+		;;+	sun3os4)+		basic_machine=m68k-sun+		os=-sunos4+		;;+	sun4os3)+		basic_machine=sparc-sun+		os=-sunos3+		;;+	sun4os4)+		basic_machine=sparc-sun+		os=-sunos4+		;;+	sun4sol2)+		basic_machine=sparc-sun+		os=-solaris2+		;;+	sun3 | sun3-*)+		basic_machine=m68k-sun+		;;+	sun4)+		basic_machine=sparc-sun+		;;+	sun386 | sun386i | roadrunner)+		basic_machine=i386-sun+		;;+	sv1)+		basic_machine=sv1-cray+		os=-unicos+		;;+	symmetry)+		basic_machine=i386-sequent+		os=-dynix+		;;+	t3e)+		basic_machine=alphaev5-cray+		os=-unicos+		;;+	t90)+		basic_machine=t90-cray+		os=-unicos+		;;+	tic54x | c54x*)+		basic_machine=tic54x-unknown+		os=-coff+		;;+	tic55x | c55x*)+		basic_machine=tic55x-unknown+		os=-coff+		;;+	tic6x | c6x*)+		basic_machine=tic6x-unknown+		os=-coff+		;;+	tx39)+		basic_machine=mipstx39-unknown+		;;+	tx39el)+		basic_machine=mipstx39el-unknown+		;;+	toad1)+		basic_machine=pdp10-xkl+		os=-tops20+		;;+	tower | tower-32)+		basic_machine=m68k-ncr+		;;+	tpf)+		basic_machine=s390x-ibm+		os=-tpf+		;;+	udi29k)+		basic_machine=a29k-amd+		os=-udi+		;;+	ultra3)+		basic_machine=a29k-nyu+		os=-sym1+		;;+	v810 | necv810)+		basic_machine=v810-nec+		os=-none+		;;+	vaxv)+		basic_machine=vax-dec+		os=-sysv+		;;+	vms)+		basic_machine=vax-dec+		os=-vms+		;;+	vpp*|vx|vx-*)+		basic_machine=f301-fujitsu+		;;+	vxworks960)+		basic_machine=i960-wrs+		os=-vxworks+		;;+	vxworks68)+		basic_machine=m68k-wrs+		os=-vxworks+		;;+	vxworks29k)+		basic_machine=a29k-wrs+		os=-vxworks+		;;+	w65*)+		basic_machine=w65-wdc+		os=-none+		;;+	w89k-*)+		basic_machine=hppa1.1-winbond+		os=-proelf+		;;+	xbox)+		basic_machine=i686-pc+		os=-mingw32+		;;+	xps | xps100)+		basic_machine=xps100-honeywell+		;;+	ymp)+		basic_machine=ymp-cray+		os=-unicos+		;;+	z8k-*-coff)+		basic_machine=z8k-unknown+		os=-sim+		;;+	none)+		basic_machine=none-none+		os=-none+		;;++# Here we handle the default manufacturer of certain CPU types.  It is in+# some cases the only manufacturer, in others, it is the most popular.+	w89k)+		basic_machine=hppa1.1-winbond+		;;+	op50n)+		basic_machine=hppa1.1-oki+		;;+	op60c)+		basic_machine=hppa1.1-oki+		;;+	romp)+		basic_machine=romp-ibm+		;;+	mmix)+		basic_machine=mmix-knuth+		;;+	rs6000)+		basic_machine=rs6000-ibm+		;;+	vax)+		basic_machine=vax-dec+		;;+	pdp10)+		# there are many clones, so DEC is not a safe bet+		basic_machine=pdp10-unknown+		;;+	pdp11)+		basic_machine=pdp11-dec+		;;+	we32k)+		basic_machine=we32k-att+		;;+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)+		basic_machine=sh-unknown+		;;+	sparc | sparcv8 | sparcv9 | sparcv9b)+		basic_machine=sparc-sun+		;;+	cydra)+		basic_machine=cydra-cydrome+		;;+	orion)+		basic_machine=orion-highlevel+		;;+	orion105)+		basic_machine=clipper-highlevel+		;;+	mac | mpw | mac-mpw)+		basic_machine=m68k-apple+		;;+	pmac | pmac-mpw)+		basic_machine=powerpc-apple+		;;+	*-unknown)+		# Make sure to match an already-canonicalized machine name.+		;;+	*)+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2+		exit 1+		;;+esac++# Here we canonicalize certain aliases for manufacturers.+case $basic_machine in+	*-digital*)+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`+		;;+	*-commodore*)+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`+		;;+	*)+		;;+esac++# Decode manufacturer-specific aliases for certain operating systems.++if [ x"$os" != x"" ]+then+case $os in+        # First match some system type aliases+        # that might get confused with valid system types.+	# -solaris* is a basic system type, with this one exception.+	-solaris1 | -solaris1.*)+		os=`echo $os | sed -e 's|solaris1|sunos4|'`+		;;+	-solaris)+		os=-solaris2+		;;+	-svr4*)+		os=-sysv4+		;;+	-unixware*)+		os=-sysv4.2uw+		;;+	-gnu/linux*)+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`+		;;+	# First accept the basic system types.+	# The portable systems comes first.+	# Each alternative MUST END IN A *, to match a version number.+	# -sysv* is not here because it comes later, after sysvr4.+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \+	      | -aos* \+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \+	      | -openbsd* | -solidbsd* \+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \+	      | -chorusos* | -chorusrdb* \+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \+	      | -uxpv* | -beos* | -mpeix* | -udk* \+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \+	      | -skyos* | -haiku* | -rdos*)+	# Remember, each alternative MUST END IN *, to match a version number.+		;;+	-qnx*)+		case $basic_machine in+		    x86-* | i*86-*)+			;;+		    *)+			os=-nto$os+			;;+		esac+		;;+	-nto-qnx*)+		;;+	-nto*)+		os=`echo $os | sed -e 's|nto|nto-qnx|'`+		;;+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)+		;;+	-mac*)+		os=`echo $os | sed -e 's|mac|macos|'`+		;;+	-linux-dietlibc)+		os=-linux-dietlibc+		;;+	-linux*)+		os=`echo $os | sed -e 's|linux|linux-gnu|'`+		;;+	-sunos5*)+		os=`echo $os | sed -e 's|sunos5|solaris2|'`+		;;+	-sunos6*)+		os=`echo $os | sed -e 's|sunos6|solaris3|'`+		;;+	-opened*)+		os=-openedition+		;;+        -os400*)+		os=-os400+		;;+	-wince*)+		os=-wince+		;;+	-osfrose*)+		os=-osfrose+		;;+	-osf*)+		os=-osf+		;;+	-utek*)+		os=-bsd+		;;+	-dynix*)+		os=-bsd+		;;+	-acis*)+		os=-aos+		;;+	-atheos*)+		os=-atheos+		;;+	-syllable*)+		os=-syllable+		;;+	-386bsd)+		os=-bsd+		;;+	-ctix* | -uts*)+		os=-sysv+		;;+	-nova*)+		os=-rtmk-nova+		;;+	-ns2 )+		os=-nextstep2+		;;+	-nsk*)+		os=-nsk+		;;+	# Preserve the version number of sinix5.+	-sinix5.*)+		os=`echo $os | sed -e 's|sinix|sysv|'`+		;;+	-sinix*)+		os=-sysv4+		;;+        -tpf*)+		os=-tpf+		;;+	-triton*)+		os=-sysv3+		;;+	-oss*)+		os=-sysv3+		;;+	-svr4)+		os=-sysv4+		;;+	-svr3)+		os=-sysv3+		;;+	-sysvr4)+		os=-sysv4+		;;+	# This must come after -sysvr4.+	-sysv*)+		;;+	-ose*)+		os=-ose+		;;+	-es1800*)+		os=-ose+		;;+	-xenix)+		os=-xenix+		;;+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)+		os=-mint+		;;+	-aros*)+		os=-aros+		;;+	-kaos*)+		os=-kaos+		;;+	-zvmoe)+		os=-zvmoe+		;;+	-none)+		;;+	*)+		# Get rid of the `-' at the beginning of $os.+		os=`echo $os | sed 's/[^-]*-//'`+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2+		exit 1+		;;+esac+else++# Here we handle the default operating systems that come with various machines.+# The value should be what the vendor currently ships out the door with their+# machine or put another way, the most popular os provided with the machine.++# Note that if you're going to try to match "-MANUFACTURER" here (say,+# "-sun"), then you have to tell the case statement up towards the top+# that MANUFACTURER isn't an operating system.  Otherwise, code above+# will signal an error saying that MANUFACTURER isn't an operating+# system, and we'll never get to this point.++case $basic_machine in+	*-acorn)+		os=-riscix1.2+		;;+	arm*-rebel)+		os=-linux+		;;+	arm*-semi)+		os=-aout+		;;+    c4x-* | tic4x-*)+        os=-coff+        ;;+	# This must come before the *-dec entry.+	pdp10-*)+		os=-tops20+		;;+	pdp11-*)+		os=-none+		;;+	*-dec | vax-*)+		os=-ultrix4.2+		;;+	m68*-apollo)+		os=-domain+		;;+	i386-sun)+		os=-sunos4.0.2+		;;+	m68000-sun)+		os=-sunos3+		# This also exists in the configure program, but was not the+		# default.+		# os=-sunos4+		;;+	m68*-cisco)+		os=-aout+		;;+	mips*-cisco)+		os=-elf+		;;+	mips*-*)+		os=-elf+		;;+	or32-*)+		os=-coff+		;;+	*-tti)	# must be before sparc entry or we get the wrong os.+		os=-sysv3+		;;+	sparc-* | *-sun)+		os=-sunos4.1.1+		;;+	*-be)+		os=-beos+		;;+	*-haiku)+		os=-haiku+		;;+	*-ibm)+		os=-aix+		;;+    	*-knuth)+		os=-mmixware+		;;+	*-wec)+		os=-proelf+		;;+	*-winbond)+		os=-proelf+		;;+	*-oki)+		os=-proelf+		;;+	*-hp)+		os=-hpux+		;;+	*-hitachi)+		os=-hiux+		;;+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)+		os=-sysv+		;;+	*-cbm)+		os=-amigaos+		;;+	*-dg)+		os=-dgux+		;;+	*-dolphin)+		os=-sysv3+		;;+	m68k-ccur)+		os=-rtu+		;;+	m88k-omron*)+		os=-luna+		;;+	*-next )+		os=-nextstep+		;;+	*-sequent)+		os=-ptx+		;;+	*-crds)+		os=-unos+		;;+	*-ns)+		os=-genix+		;;+	i370-*)+		os=-mvs+		;;+	*-next)+		os=-nextstep3+		;;+	*-gould)+		os=-sysv+		;;+	*-highlevel)+		os=-bsd+		;;+	*-encore)+		os=-bsd+		;;+	*-sgi)+		os=-irix+		;;+	*-siemens)+		os=-sysv4+		;;+	*-masscomp)+		os=-rtu+		;;+	f30[01]-fujitsu | f700-fujitsu)+		os=-uxpv+		;;+	*-rom68k)+		os=-coff+		;;+	*-*bug)+		os=-coff+		;;+	*-apple)+		os=-macos+		;;+	*-atari*)+		os=-mint+		;;+	*)+		os=-none+		;;+esac+fi++# Here we handle the case where we know the os, and the CPU type, but not the+# manufacturer.  We pick the logical manufacturer.+vendor=unknown+case $basic_machine in+	*-unknown)+		case $os in+			-riscix*)+				vendor=acorn+				;;+			-sunos*)+				vendor=sun+				;;+			-aix*)+				vendor=ibm+				;;+			-beos*)+				vendor=be+				;;+			-hpux*)+				vendor=hp+				;;+			-mpeix*)+				vendor=hp+				;;+			-hiux*)+				vendor=hitachi+				;;+			-unos*)+				vendor=crds+				;;+			-dgux*)+				vendor=dg+				;;+			-luna*)+				vendor=omron+				;;+			-genix*)+				vendor=ns+				;;+			-mvs* | -opened*)+				vendor=ibm+				;;+			-os400*)+				vendor=ibm+				;;+			-ptx*)+				vendor=sequent+				;;+			-tpf*)+				vendor=ibm+				;;+			-vxsim* | -vxworks* | -windiss*)+				vendor=wrs+				;;+			-aux*)+				vendor=apple+				;;+			-hms*)+				vendor=hitachi+				;;+			-mpw* | -macos*)+				vendor=apple+				;;+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)+				vendor=atari+				;;+			-vos*)+				vendor=stratus+				;;+		esac+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`+		;;+esac++echo $basic_machine$os+exit++# Local variables:+# eval: (add-hook 'write-file-hooks 'time-stamp)+# time-stamp-start: "timestamp='"+# time-stamp-format: "%:y-%02m-%02d"+# time-stamp-end: "'"+# End:
+ configure view
@@ -0,0 +1,8729 @@+#! /bin/sh+# Guess values for system-dependent variables and create Makefiles.+# Generated by GNU Autoconf 2.57 for Haskell HOpenAL package 1.3.+#+# Report bugs to <sven.panne@aedion.de>.+#+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002+# 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.  ##+## --------------------- ##++# Be Bourne compatible+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+  emulate sh+  NULLCMD=:+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+  # is contrary to our usage.  Disable this feature.+  alias -g '${1+"$@"}'='"$@"'+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then+  set -o posix+fi++# Support unset when possible.+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then+  as_unset=unset+else+  as_unset=false+fi+++# Work around bugs in pre-3.0 UWIN ksh.+$as_unset ENV MAIL MAILPATH+PS1='$ '+PS2='> '+PS4='+ '++# NLS nuisances.+for as_var in \+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \+  LC_TELEPHONE LC_TIME+do+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then+    eval $as_var=C; export $as_var+  else+    $as_unset $as_var+  fi+done++# Required to use basename.+if expr a : '\(a\)' >/dev/null 2>&1; 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 ||+echo X/"$0" |+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }+  	  /^X\/\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+++# PATH needs CR, and LINENO needs CR and PATH.+# 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++# The user is always right.+if test "${PATH_SEPARATOR+set}" != set; then+  echo "#! /bin/sh" >conf$$.sh+  echo  "exit 0"   >>conf$$.sh+  chmod +x conf$$.sh+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then+    PATH_SEPARATOR=';'+  else+    PATH_SEPARATOR=:+  fi+  rm -f conf$$.sh+fi+++  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {+  # Find who we are.  Look in the path if we contain no path at all+  # relative or not.+  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++       ;;+  esac+  # We did not find ourselves, most probably we were run as `sh COMMAND'+  # in which case we are not to be found in the path.+  if test "x$as_myself" = x; then+    as_myself=$0+  fi+  if test ! -f "$as_myself"; then+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2+   { (exit 1); exit 1; }; }+  fi+  case $CONFIG_SHELL in+  '')+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for as_base in sh bash ksh sh5; do+	 case $as_dir in+	 /*)+	   if ("$as_dir/$as_base" -c '+  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }+	     CONFIG_SHELL=$as_dir/$as_base+	     export CONFIG_SHELL+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}+	   fi;;+	 esac+       done+done+;;+  esac++  # 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 before each line; the second 'sed' does the real+  # work.  The second script uses 'N' to pair each line-number line+  # with the numbered line, 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+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)+  sed '=' <$as_myself |+    sed '+      N+      s,$,-,+      : loop+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,+      t loop+      s,-$,,+      s,^['$as_cr_digits']*\n,,+    ' >$as_me.lineno &&+  chmod +x $as_me.lineno ||+    { 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 sensible to this).+  . ./$as_me.lineno+  # Exit status is that of the last command.+  exit+}+++case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in+  *c*,-n*) ECHO_N= ECHO_C='+' ECHO_T='	' ;;+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;+esac++if expr a : '\(a\)' >/dev/null 2>&1; then+  as_expr=expr+else+  as_expr=false+fi++rm -f conf$$ conf$$.exe conf$$.file+echo >conf$$.file+if ln -s conf$$.file conf$$ 2>/dev/null; then+  # We could just check for DJGPP; but this test a) works b) is more generic+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).+  if test -f conf$$.exe; then+    # Don't use ln at all; we don't have any links+    as_ln_s='cp -p'+  else+    as_ln_s='ln -s'+  fi+elif ln conf$$.file conf$$ 2>/dev/null; then+  as_ln_s=ln+else+  as_ln_s='cp -p'+fi+rm -f conf$$ conf$$.exe conf$$.file++if mkdir -p . 2>/dev/null; then+  as_mkdir_p=:+else+  as_mkdir_p=false+fi++as_executable_p="test -f"++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"+++# IFS+# We need space, tab and new line, in precisely that order.+as_nl='+'+IFS=" 	$as_nl"++# CDPATH.+$as_unset CDPATH+++# Name of the host.+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,+# so uname gets run too.+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`++exec 6>&1++#+# Initializations.+#+ac_default_prefix=/usr/local+ac_config_libobj_dir=.+cross_compiling=no+subdirs=+MFLAGS=+MAKEFLAGS=+SHELL=${CONFIG_SHELL-/bin/sh}++# Maximum number of lines to put in a shell here document.+# This variable seems obsolete.  It should probably be removed, and+# only ac_max_sed_lines should be used.+: ${ac_max_here_lines=38}++# Identity of this package.+PACKAGE_NAME='Haskell HOpenAL package'+PACKAGE_TARNAME='OpenAL'+PACKAGE_VERSION='1.3'+PACKAGE_STRING='Haskell HOpenAL package 1.3'+PACKAGE_BUGREPORT='sven.panne@aedion.de'++ac_unique_file="include/HsOpenAL.h.in"+# Factoring default headers for most tests.+ac_includes_default="\+#include <stdio.h>+#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif+#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif+#if STDC_HEADERS+# include <stdlib.h>+# include <stddef.h>+#else+# if HAVE_STDLIB_H+#  include <stdlib.h>+# endif+#endif+#if HAVE_STRING_H+# if !STDC_HEADERS && HAVE_MEMORY_H+#  include <memory.h>+# endif+# include <string.h>+#endif+#if HAVE_STRINGS_H+# include <strings.h>+#endif+#if HAVE_INTTYPES_H+# include <inttypes.h>+#else+# if HAVE_STDINT_H+#  include <stdint.h>+# endif+#endif+#if HAVE_UNISTD_H+# include <unistd.h>+#endif"++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS AL_BUILD_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT AL_LIBS AL_FRAMEWORKS CPP EGREP BUILD_PACKAGE_BOOL CALLCONV LIBOBJS LTLIBOBJS'+ac_subst_files=''++# Initialize some variables set by options.+ac_init_help=+ac_init_version=false+# The variables have the same names as the options, with+# dashes changed to underlines.+cache_file=/dev/null+exec_prefix=NONE+no_create=+no_recursion=+prefix=NONE+program_prefix=NONE+program_suffix=NONE+program_transform_name=s,x,x,+silent=+site=+srcdir=+verbose=+x_includes=NONE+x_libraries=NONE++# Installation directory options.+# These are left unexpanded so users can "make install exec_prefix=/foo"+# and all the variables that are supposed to be based on exec_prefix+# by default will actually change.+# Use braces instead of parens because sh, perl, etc. also accept them.+bindir='${exec_prefix}/bin'+sbindir='${exec_prefix}/sbin'+libexecdir='${exec_prefix}/libexec'+datadir='${prefix}/share'+sysconfdir='${prefix}/etc'+sharedstatedir='${prefix}/com'+localstatedir='${prefix}/var'+libdir='${exec_prefix}/lib'+includedir='${prefix}/include'+oldincludedir='/usr/include'+infodir='${prefix}/info'+mandir='${prefix}/man'++ac_prev=+for ac_option+do+  # If the previous option needs an argument, assign it.+  if test -n "$ac_prev"; then+    eval "$ac_prev=\$ac_option"+    ac_prev=+    continue+  fi++  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`++  # Accept the important Cygnus configure options, so we can diagnose typos.++  case $ac_option in++  -bindir | --bindir | --bindi | --bind | --bin | --bi)+    ac_prev=bindir ;;+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)+    bindir=$ac_optarg ;;++  -build | --build | --buil | --bui | --bu)+    ac_prev=build_alias ;;+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)+    build_alias=$ac_optarg ;;++  -cache-file | --cache-file | --cache-fil | --cache-fi \+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)+    ac_prev=cache_file ;;+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)+    cache_file=$ac_optarg ;;++  --config-cache | -C)+    cache_file=config.cache ;;++  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)+    ac_prev=datadir ;;+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \+  | --da=*)+    datadir=$ac_optarg ;;++  -disable-* | --disable-*)+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2+   { (exit 1); exit 1; }; }+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`+    eval "enable_$ac_feature=no" ;;++  -enable-* | --enable-*)+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2+   { (exit 1); exit 1; }; }+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`+    case $ac_option in+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;+      *) ac_optarg=yes ;;+    esac+    eval "enable_$ac_feature='$ac_optarg'" ;;++  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \+  | --exec | --exe | --ex)+    ac_prev=exec_prefix ;;+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \+  | --exec=* | --exe=* | --ex=*)+    exec_prefix=$ac_optarg ;;++  -gas | --gas | --ga | --g)+    # Obsolete; use --with-gas.+    with_gas=yes ;;++  -help | --help | --hel | --he | -h)+    ac_init_help=long ;;+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)+    ac_init_help=recursive ;;+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)+    ac_init_help=short ;;++  -host | --host | --hos | --ho)+    ac_prev=host_alias ;;+  -host=* | --host=* | --hos=* | --ho=*)+    host_alias=$ac_optarg ;;++  -includedir | --includedir | --includedi | --included | --include \+  | --includ | --inclu | --incl | --inc)+    ac_prev=includedir ;;+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \+  | --includ=* | --inclu=* | --incl=* | --inc=*)+    includedir=$ac_optarg ;;++  -infodir | --infodir | --infodi | --infod | --info | --inf)+    ac_prev=infodir ;;+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)+    infodir=$ac_optarg ;;++  -libdir | --libdir | --libdi | --libd)+    ac_prev=libdir ;;+  -libdir=* | --libdir=* | --libdi=* | --libd=*)+    libdir=$ac_optarg ;;++  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \+  | --libexe | --libex | --libe)+    ac_prev=libexecdir ;;+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \+  | --libexe=* | --libex=* | --libe=*)+    libexecdir=$ac_optarg ;;++  -localstatedir | --localstatedir | --localstatedi | --localstated \+  | --localstate | --localstat | --localsta | --localst \+  | --locals | --local | --loca | --loc | --lo)+    ac_prev=localstatedir ;;+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)+    localstatedir=$ac_optarg ;;++  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)+    ac_prev=mandir ;;+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)+    mandir=$ac_optarg ;;++  -nfp | --nfp | --nf)+    # Obsolete; use --without-fp.+    with_fp=no ;;++  -no-create | --no-create | --no-creat | --no-crea | --no-cre \+  | --no-cr | --no-c | -n)+    no_create=yes ;;++  -no-recursion | --no-recursion | --no-recursio | --no-recursi \+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)+    no_recursion=yes ;;++  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \+  | --oldin | --oldi | --old | --ol | --o)+    ac_prev=oldincludedir ;;+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)+    oldincludedir=$ac_optarg ;;++  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)+    ac_prev=prefix ;;+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)+    prefix=$ac_optarg ;;++  -program-prefix | --program-prefix | --program-prefi | --program-pref \+  | --program-pre | --program-pr | --program-p)+    ac_prev=program_prefix ;;+  -program-prefix=* | --program-prefix=* | --program-prefi=* \+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)+    program_prefix=$ac_optarg ;;++  -program-suffix | --program-suffix | --program-suffi | --program-suff \+  | --program-suf | --program-su | --program-s)+    ac_prev=program_suffix ;;+  -program-suffix=* | --program-suffix=* | --program-suffi=* \+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)+    program_suffix=$ac_optarg ;;++  -program-transform-name | --program-transform-name \+  | --program-transform-nam | --program-transform-na \+  | --program-transform-n | --program-transform- \+  | --program-transform | --program-transfor \+  | --program-transfo | --program-transf \+  | --program-trans | --program-tran \+  | --progr-tra | --program-tr | --program-t)+    ac_prev=program_transform_name ;;+  -program-transform-name=* | --program-transform-name=* \+  | --program-transform-nam=* | --program-transform-na=* \+  | --program-transform-n=* | --program-transform-=* \+  | --program-transform=* | --program-transfor=* \+  | --program-transfo=* | --program-transf=* \+  | --program-trans=* | --program-tran=* \+  | --progr-tra=* | --program-tr=* | --program-t=*)+    program_transform_name=$ac_optarg ;;++  -q | -quiet | --quiet | --quie | --qui | --qu | --q \+  | -silent | --silent | --silen | --sile | --sil)+    silent=yes ;;++  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)+    ac_prev=sbindir ;;+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \+  | --sbi=* | --sb=*)+    sbindir=$ac_optarg ;;++  -sharedstatedir | --sharedstatedir | --sharedstatedi \+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \+  | --sharedst | --shareds | --shared | --share | --shar \+  | --sha | --sh)+    ac_prev=sharedstatedir ;;+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \+  | --sha=* | --sh=*)+    sharedstatedir=$ac_optarg ;;++  -site | --site | --sit)+    ac_prev=site ;;+  -site=* | --site=* | --sit=*)+    site=$ac_optarg ;;++  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)+    ac_prev=srcdir ;;+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)+    srcdir=$ac_optarg ;;++  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \+  | --syscon | --sysco | --sysc | --sys | --sy)+    ac_prev=sysconfdir ;;+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)+    sysconfdir=$ac_optarg ;;++  -target | --target | --targe | --targ | --tar | --ta | --t)+    ac_prev=target_alias ;;+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)+    target_alias=$ac_optarg ;;++  -v | -verbose | --verbose | --verbos | --verbo | --verb)+    verbose=yes ;;++  -version | --version | --versio | --versi | --vers | -V)+    ac_init_version=: ;;++  -with-* | --with-*)+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid package name: $ac_package" >&2+   { (exit 1); exit 1; }; }+    ac_package=`echo $ac_package| sed 's/-/_/g'`+    case $ac_option in+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;+      *) ac_optarg=yes ;;+    esac+    eval "with_$ac_package='$ac_optarg'" ;;++  -without-* | --without-*)+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&+      { echo "$as_me: error: invalid package name: $ac_package" >&2+   { (exit 1); exit 1; }; }+    ac_package=`echo $ac_package | sed 's/-/_/g'`+    eval "with_$ac_package=no" ;;++  --x)+    # Obsolete; use --with-x.+    with_x=yes ;;++  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \+  | --x-incl | --x-inc | --x-in | --x-i)+    ac_prev=x_includes ;;+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)+    x_includes=$ac_optarg ;;++  -x-libraries | --x-libraries | --x-librarie | --x-librari \+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)+    ac_prev=x_libraries ;;+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)+    x_libraries=$ac_optarg ;;++  -*) { echo "$as_me: error: unrecognized option: $ac_option+Try \`$0 --help' for more information." >&2+   { (exit 1); exit 1; }; }+    ;;++  *=*)+    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 &&+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2+   { (exit 1); exit 1; }; }+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`+    eval "$ac_envvar='$ac_optarg'"+    export $ac_envvar ;;++  *)+    # FIXME: should be removed in autoconf 3.0.+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}+    ;;++  esac+done++if test -n "$ac_prev"; then+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`+  { echo "$as_me: error: missing argument to $ac_option" >&2+   { (exit 1); exit 1; }; }+fi++# Be sure to have absolute paths.+for ac_var in exec_prefix prefix+do+  eval ac_val=$`echo $ac_var`+  case $ac_val in+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2+   { (exit 1); exit 1; }; };;+  esac+done++# Be sure to have absolute paths.+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \+              localstatedir libdir includedir oldincludedir infodir mandir+do+  eval ac_val=$`echo $ac_var`+  case $ac_val in+    [\\/$]* | ?:[\\/]* ) ;;+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2+   { (exit 1); exit 1; }; };;+  esac+done++# There might be people who depend on the old broken behavior: `$host'+# used to hold the argument of --host etc.+# FIXME: To remove some day.+build=$build_alias+host=$host_alias+target=$target_alias++# FIXME: To remove some day.+if test "x$host_alias" != x; then+  if test "x$build_alias" = x; then+    cross_compiling=maybe+    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+fi++ac_tool_prefix=+test -n "$host_alias" && ac_tool_prefix=$host_alias-++test "$silent" = yes && exec 6>/dev/null+++# Find the source files, if location was not specified.+if test -z "$srcdir"; then+  ac_srcdir_defaulted=yes+  # Try the directory containing this script, then its parent.+  ac_confdir=`(dirname "$0") 2>/dev/null ||+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+         X"$0" : 'X\(//\)[^/]' \| \+         X"$0" : 'X\(//\)$' \| \+         X"$0" : 'X\(/\)' \| \+         .     : '\(.\)' 2>/dev/null ||+echo X"$0" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+  srcdir=$ac_confdir+  if test ! -r $srcdir/$ac_unique_file; then+    srcdir=..+  fi+else+  ac_srcdir_defaulted=no+fi+if test ! -r $srcdir/$ac_unique_file; then+  if test "$ac_srcdir_defaulted" = yes; then+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2+   { (exit 1); exit 1; }; }+  else+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2+   { (exit 1); exit 1; }; }+  fi+fi+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2+   { (exit 1); exit 1; }; }+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`+ac_env_build_alias_set=${build_alias+set}+ac_env_build_alias_value=$build_alias+ac_cv_env_build_alias_set=${build_alias+set}+ac_cv_env_build_alias_value=$build_alias+ac_env_host_alias_set=${host_alias+set}+ac_env_host_alias_value=$host_alias+ac_cv_env_host_alias_set=${host_alias+set}+ac_cv_env_host_alias_value=$host_alias+ac_env_target_alias_set=${target_alias+set}+ac_env_target_alias_value=$target_alias+ac_cv_env_target_alias_set=${target_alias+set}+ac_cv_env_target_alias_value=$target_alias+ac_env_CC_set=${CC+set}+ac_env_CC_value=$CC+ac_cv_env_CC_set=${CC+set}+ac_cv_env_CC_value=$CC+ac_env_CFLAGS_set=${CFLAGS+set}+ac_env_CFLAGS_value=$CFLAGS+ac_cv_env_CFLAGS_set=${CFLAGS+set}+ac_cv_env_CFLAGS_value=$CFLAGS+ac_env_LDFLAGS_set=${LDFLAGS+set}+ac_env_LDFLAGS_value=$LDFLAGS+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}+ac_cv_env_LDFLAGS_value=$LDFLAGS+ac_env_CPPFLAGS_set=${CPPFLAGS+set}+ac_env_CPPFLAGS_value=$CPPFLAGS+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}+ac_cv_env_CPPFLAGS_value=$CPPFLAGS+ac_env_CPP_set=${CPP+set}+ac_env_CPP_value=$CPP+ac_cv_env_CPP_set=${CPP+set}+ac_cv_env_CPP_value=$CPP++#+# Report the --help message.+#+if test "$ac_init_help" = "long"; then+  # Omit some internal or obsolete options to make the list less imposing.+  # This message is too long to be a string in the A/UX 3.1 sh.+  cat <<_ACEOF+\`configure' configures Haskell HOpenAL package 1.3 to adapt to many kinds of systems.++Usage: $0 [OPTION]... [VAR=VALUE]...++To assign environment variables (e.g., CC, CFLAGS...), specify them as+VAR=VALUE.  See below for descriptions of some of the useful variables.++Defaults for the options are specified in brackets.++Configuration:+  -h, --help              display this help and exit+      --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+      --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+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']++_ACEOF++  cat <<_ACEOF+Installation directories:+  --prefix=PREFIX         install architecture-independent files in PREFIX+                          [$ac_default_prefix]+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX+                          [PREFIX]++By default, \`make install' will install all the files in+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify+an installation prefix other than \`$ac_default_prefix' using \`--prefix',+for instance \`--prefix=\$HOME'.++For better control, use the options below.++Fine tuning of the installation directories:+  --bindir=DIR           user executables [EPREFIX/bin]+  --sbindir=DIR          system admin executables [EPREFIX/sbin]+  --libexecdir=DIR       program executables [EPREFIX/libexec]+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]+  --libdir=DIR           object code libraries [EPREFIX/lib]+  --includedir=DIR       C header files [PREFIX/include]+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]+  --infodir=DIR          info documentation [PREFIX/info]+  --mandir=DIR           man documentation [PREFIX/man]+_ACEOF++  cat <<\_ACEOF+_ACEOF+fi++if test -n "$ac_init_help"; then+  case $ac_init_help in+     short | recursive ) echo "Configuration of Haskell HOpenAL package 1.3:";;+   esac+  cat <<\_ACEOF++Optional Features:+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]+  --enable-openal         build a Haskell binding for OpenAL+                          (default=autodetect)++Some influential environment variables:+  CC          C compiler command+  CFLAGS      C compiler flags+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a+              nonstandard directory <lib dir>+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have+              headers in a nonstandard directory <include dir>+  CPP         C preprocessor++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 <sven.panne@aedion.de>.+_ACEOF+fi++if test "$ac_init_help" = "recursive"; then+  # If there are subdirs, report their specific --help.+  ac_popdir=`pwd`+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue+    test -d $ac_dir || continue+    ac_builddir=.++if test "$ac_dir" != .; then+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`+  # A "../" for each directory in $ac_dir_suffix.+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`+else+  ac_dir_suffix= ac_top_builddir=+fi++case $srcdir in+  .)  # No --srcdir option.  We are building in place.+    ac_srcdir=.+    if test -z "$ac_top_builddir"; then+       ac_top_srcdir=.+    else+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`+    fi ;;+  [\\/]* | ?:[\\/]* )  # Absolute path.+    ac_srcdir=$srcdir$ac_dir_suffix;+    ac_top_srcdir=$srcdir ;;+  *) # Relative path.+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix+    ac_top_srcdir=$ac_top_builddir$srcdir ;;+esac+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be+# absolute.+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`++    cd $ac_dir+    # Check for guested configure; otherwise get Cygnus style configure.+    if test -f $ac_srcdir/configure.gnu; then+      echo+      $SHELL $ac_srcdir/configure.gnu  --help=recursive+    elif test -f $ac_srcdir/configure; then+      echo+      $SHELL $ac_srcdir/configure  --help=recursive+    elif test -f $ac_srcdir/configure.ac ||+           test -f $ac_srcdir/configure.in; then+      echo+      $ac_configure --help+    else+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2+    fi+    cd $ac_popdir+  done+fi++test -n "$ac_init_help" && exit 0+if $ac_init_version; then+  cat <<\_ACEOF+Haskell HOpenAL package configure 1.3+generated by GNU Autoconf 2.57++Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002+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 0+fi+exec 5>config.log+cat >&5 <<_ACEOF+This file contains any messages produced by compilers while+running configure, to aid debugging if configure makes a mistake.++It was created by Haskell HOpenAL package $as_me 1.3, which was+generated by GNU Autoconf 2.57.  Invocation command line was++  $ $0 $@++_ACEOF+{+cat <<_ASUNAME+## --------- ##+## Platform. ##+## --------- ##++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`+uname -m = `(uname -m) 2>/dev/null || echo unknown`+uname -r = `(uname -r) 2>/dev/null || echo unknown`+uname -s = `(uname -s) 2>/dev/null || echo unknown`+uname -v = `(uname -v) 2>/dev/null || echo unknown`++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`++/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`++_ASUNAME++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  echo "PATH: $as_dir"+done++} >&5++cat >&5 <<_ACEOF+++## ----------- ##+## Core tests. ##+## ----------- ##++_ACEOF+++# Keep a trace of the command line.+# Strip out --no-create and --no-recursion so they do not pile up.+# Strip out --silent because we don't want to record it for future runs.+# Also quote any args containing shell meta-characters.+# Make two passes to allow for proper duplicate-argument suppression.+ac_configure_args=+ac_configure_args0=+ac_configure_args1=+ac_sep=+ac_must_keep_next=false+for ac_pass in 1 2+do+  for ac_arg+  do+    case $ac_arg in+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \+    | -silent | --silent | --silen | --sile | --sil)+      continue ;;+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;+    esac+    case $ac_pass in+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;+    2)+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"+      if test $ac_must_keep_next = true; then+        ac_must_keep_next=false # Got value, back to normal.+      else+        case $ac_arg in+          *=* | --config-cache | -C | -disable-* | --disable-* \+          | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \+          | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \+          | -with-* | --with-* | -without-* | --without-* | --x)+            case "$ac_configure_args0 " in+              "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;+            esac+            ;;+          -* ) ac_must_keep_next=true ;;+        esac+      fi+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"+      # Get rid of the leading space.+      ac_sep=" "+      ;;+    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; }++# When interrupted or exit'd, cleanup temporary files, and complete+# config.log.  We remove comments because anyway the quotes in there+# would cause problems or look ugly.+# WARNING: Be sure not to use single quotes in there, as some shells,+# such as our DU 5.0 friend, will then `close' the trap.+trap 'exit_status=$?+  # Save into config.log some information that might help in debugging.+  {+    echo++    cat <<\_ASBOX+## ---------------- ##+## Cache variables. ##+## ---------------- ##+_ASBOX+    echo+    # The following way of writing the cache mishandles newlines in values,+{+  (set) 2>&1 |+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in+    *ac_space=\ *)+      sed -n \+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;+    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"+      ;;+    *)+      sed -n \+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"+      ;;+    esac;+}+    echo++    cat <<\_ASBOX+## ----------------- ##+## Output variables. ##+## ----------------- ##+_ASBOX+    echo+    for ac_var in $ac_subst_vars+    do+      eval ac_val=$`echo $ac_var`+      echo "$ac_var='"'"'$ac_val'"'"'"+    done | sort+    echo++    if test -n "$ac_subst_files"; then+      cat <<\_ASBOX+## ------------- ##+## Output files. ##+## ------------- ##+_ASBOX+      echo+      for ac_var in $ac_subst_files+      do+	eval ac_val=$`echo $ac_var`+        echo "$ac_var='"'"'$ac_val'"'"'"+      done | sort+      echo+    fi++    if test -s confdefs.h; then+      cat <<\_ASBOX+## ----------- ##+## confdefs.h. ##+## ----------- ##+_ASBOX+      echo+      sed "/^$/d" confdefs.h | sort+      echo+    fi+    test "$ac_signal" != 0 &&+      echo "$as_me: caught signal $ac_signal"+    echo "$as_me: exit $exit_status"+  } >&5+  rm -f core core.* *.core &&+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&+    exit $exit_status+     ' 0+for ac_signal in 1 2 13 15; do+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal+done+ac_signal=0++# confdefs.h avoids OS command line length limits that DEFS can exceed.+rm -rf conftest* confdefs.h+# AIX cpp loses on an empty file, so make sure it contains at least a newline.+echo >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+++# Let the site file select an alternate cache file if it wants to.+# Prefer explicitly selected file to automatically selected ones.+if test -z "$CONFIG_SITE"; then+  if test "x$prefix" != xNONE; then+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"+  else+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"+  fi+fi+for ac_site_file in $CONFIG_SITE; do+  if test -r "$ac_site_file"; then+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5+echo "$as_me: loading site script $ac_site_file" >&6;}+    sed 's/^/| /' "$ac_site_file" >&5+    . "$ac_site_file"+  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+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5+echo "$as_me: loading cache $cache_file" >&6;}+    case $cache_file in+      [\\/]* | ?:[\\/]* ) . $cache_file;;+      *)                      . ./$cache_file;;+    esac+  fi+else+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5+echo "$as_me: creating cache $cache_file" >&6;}+  >$cache_file+fi++# Check that the precious variables saved in the cache have kept the same+# value.+ac_cache_corrupted=false+for ac_var in `(set) 2>&1 |+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do+  eval ac_old_set=\$ac_cv_env_${ac_var}_set+  eval ac_new_set=\$ac_env_${ac_var}_set+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"+  eval ac_new_val="\$ac_env_${ac_var}_value"+  case $ac_old_set,$ac_new_set in+    set,)+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}+      ac_cache_corrupted=: ;;+    ,set)+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}+      ac_cache_corrupted=: ;;+    ,);;+    *)+      if test "x$ac_old_val" != "x$ac_new_val"; then+        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}+        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5+echo "$as_me:   former value:  $ac_old_val" >&2;}+        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5+echo "$as_me:   current value: $ac_new_val" >&2;}+        ac_cache_corrupted=:+      fi;;+  esac+  # Pass precious variables to config.status.+  if test "$ac_new_set" = set; then+    case $ac_new_val in+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;+    *) ac_arg=$ac_var=$ac_new_val ;;+    esac+    case " $ac_configure_args " in+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;+    esac+  fi+done+if $ac_cache_corrupted; then+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5+echo "$as_me: error: changes in the environment can compromise the build" >&2;}+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}+   { (exit 1); exit 1; }; }+fi++ac_ext=c+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+++++++++++++++++++++++++++++# Safety check: Ensure that we are in the correct source directory.+++# The first file mentioned below will be generated by autoheader and contains+# defines which are needed during package build time only. The second header+# contains all kinds of stuff which is needed for using this package.+                    ac_config_headers="$ac_config_headers include/HsOpenALConfig.h include/HsOpenAL.h"+++# Shall we build this package at all?+# Check whether --enable-openal or --disable-openal was given.+if test "${enable_openal+set}" = set; then+  enableval="$enable_openal"+  enable_openal=$enableval+else+  enable_openal=yes+fi;++# We set this to "yes" later when we have found OpenAL libs and headers.+AL_BUILD_PACKAGE=no+if test x"$enable_openal" = xyes; then++++# The following test for the OpenAL library is a bit of a hack, but gives nice+# feedback even for the case when no additional library is needed. (Mac OS X?)+AL_LIBS=no+ac_ext=c+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+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+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="${ac_tool_prefix}gcc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++fi+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+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="gcc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++  CC=$ac_ct_CC+else+  CC="$ac_cv_prog_CC"+fi++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+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="${ac_tool_prefix}cc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++fi+if test -z "$ac_cv_prog_CC"; then+  ac_ct_CC=$CC+  # Extract the first word of "cc", so it can be a program name with args.+set dummy cc; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="cc"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++  CC=$ac_ct_CC+else+  CC="$ac_cv_prog_CC"+fi++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+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+  ac_prog_rejected=no+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+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 $as_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"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++if test $ac_prog_rejected = yes; then+  # We found a bogon in the path, so make sure we never use it.+  set dummy $ac_cv_prog_CC+  shift+  if test $# != 0; then+    # We chose a different compiler from the bogus one.+    # However, it has the same basename, so the bogon will be chosen+    # first if we set CC to just the basename; use the full file name.+    shift+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"+  fi+fi+fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++fi+if test -z "$CC"; then+  if test -n "$ac_tool_prefix"; then+  for ac_prog in cl+  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+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  echo "$as_me:$LINENO: result: $CC" >&5+echo "${ECHO_T}$CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++    test -n "$CC" && break+  done+fi+if test -z "$CC"; then+  ac_ct_CC=$CC+  for ac_prog in cl+do+  # Extract the first word of "$ac_prog", so it can be a program name with args.+set dummy $ac_prog; ac_word=$2+echo "$as_me:$LINENO: checking for $ac_word" >&5+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="$ac_prog"+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+done++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5+echo "${ECHO_T}$ac_ct_CC" >&6+else+  echo "$as_me:$LINENO: result: no" >&5+echo "${ECHO_T}no" >&6+fi++  test -n "$ac_ct_CC" && break+done++  CC=$ac_ct_CC+fi++fi+++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH+See \`config.log' for more details." >&5+echo "$as_me: error: no acceptable C compiler found in \$PATH+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }++# Provide some information about the compiler.+echo "$as_me:$LINENO:" \+     "checking for C compiler version" >&5+ac_compiler=`set X $ac_compile; echo $2`+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5+  (eval $ac_compiler --version </dev/null >&5) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5+  (eval $ac_compiler -v </dev/null >&5) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5+  (eval $ac_compiler -V </dev/null >&5) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }++cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{++  ;+  return 0;+}+_ACEOF+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files a.out 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.+echo "$as_me:$LINENO: checking for C compiler default output" >&5+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5+  (eval $ac_link_default) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; then+  # Find the output, starting from the most likely.  This scheme is+# not robust to junk in `.', hence go to wildcards (a.*) only as a last+# resort.++# Be careful to initialize this variable, since it used to be cached.+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.+ac_cv_exeext=+# b.out is created by i960 compilers.+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out+do+  test -f "$ac_file" || continue+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )+        ;;+    conftest.$ac_ext )+        # This is the source file.+        ;;+    [ab].out )+        # We found the default executable, but exeext='' is most+        # certainly right.+        break;;+    *.* )+        ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+        # FIXME: I believe we export ac_cv_exeext for Libtool,+        # but it would be cool to find out if it's true.  Does anybody+        # maintain Libtool? --akim.+        export ac_cv_exeext+        break;;+    * )+        break;;+  esac+done+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { echo "$as_me:$LINENO: error: C compiler cannot create executables+See \`config.log' for more details." >&5+echo "$as_me: error: C compiler cannot create executables+See \`config.log' for more details." >&2;}+   { (exit 77); exit 77; }; }+fi++ac_exeext=$ac_cv_exeext+echo "$as_me:$LINENO: result: $ac_file" >&5+echo "${ECHO_T}$ac_file" >&6++# Check the compiler produces executables we can run.  If not, either+# the compiler is broken, or we cross compile.+echo "$as_me:$LINENO: checking whether the C compiler works" >&5+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&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'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  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+	{ { 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+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+echo "$as_me:$LINENO: result: yes" >&5+echo "${ECHO_T}yes" >&6++rm -f a.out a.exe conftest$ac_cv_exeext b.out+ac_clean_files=$ac_clean_files_save+# Check the compiler produces executables we can run.  If not, either+# the compiler is broken, or we cross compile.+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6+echo "$as_me:$LINENO: result: $cross_compiling" >&5+echo "${ECHO_T}$cross_compiling" >&6++echo "$as_me:$LINENO: checking for suffix of executables" >&5+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; 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+# `rm'.+for ac_file in conftest.exe conftest conftest.*; do+  test -f "$ac_file" || continue+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+          export ac_cv_exeext+          break;;+    * ) break;;+  esac+done+else+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link+See \`config.log' for more details." >&5+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+fi++rm -f conftest$ac_cv_exeext+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5+echo "${ECHO_T}$ac_cv_exeext" >&6++rm -f conftest.$ac_ext+EXEEXT=$ac_cv_exeext+ac_exeext=$EXEEXT+echo "$as_me:$LINENO: checking for suffix of object files" >&5+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6+if test "${ac_cv_objext+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{++  ;+  return 0;+}+_ACEOF+rm -f conftest.o conftest.obj+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; then+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`+       break;;+  esac+done+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile+See \`config.log' for more details." >&5+echo "$as_me: error: cannot compute suffix of object files: cannot compile+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+fi++rm -f conftest.$ac_cv_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5+echo "${ECHO_T}$ac_cv_objext" >&6+OBJEXT=$ac_cv_objext+ac_objext=$OBJEXT+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6+if test "${ac_cv_c_compiler_gnu+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{+#ifndef __GNUC__+       choke me+#endif++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_compiler_gnu=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_compiler_gnu=no+fi+rm -f conftest.$ac_objext conftest.$ac_ext+ac_cv_c_compiler_gnu=$ac_compiler_gnu++fi+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6+GCC=`test $ac_compiler_gnu = yes && echo yes`+ac_test_CFLAGS=${CFLAGS+set}+ac_save_CFLAGS=$CFLAGS+CFLAGS="-g"+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6+if test "${ac_cv_prog_cc_g+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++int+main ()+{++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_cv_prog_cc_g=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_cv_prog_cc_g=no+fi+rm -f conftest.$ac_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6+if test "$ac_test_CFLAGS" = set; then+  CFLAGS=$ac_save_CFLAGS+elif test $ac_cv_prog_cc_g = yes; then+  if test "$GCC" = yes; then+    CFLAGS="-g -O2"+  else+    CFLAGS="-g"+  fi+else+  if test "$GCC" = yes; then+    CFLAGS="-O2"+  else+    CFLAGS=+  fi+fi+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6+if test "${ac_cv_prog_cc_stdc+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  ac_cv_prog_cc_stdc=no+ac_save_CC=$CC+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdarg.h>+#include <stdio.h>+#include <sys/types.h>+#include <sys/stat.h>+/* 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);+static char *e (p, i)+     char **p;+     int i;+{+  return p[i];+}+static char *f (char * (*g) (char **, int), char **p, ...)+{+  char *s;+  va_list v;+  va_start (v,p);+  s = g (p, va_arg (v,int));+  va_end (v);+  return s;+}+int test (int i, double x);+struct s1 {int (*f) (int a);};+struct s2 {int (*f) (double a);};+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);+int argc;+char **argv;+int+main ()+{+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];+  ;+  return 0;+}+_ACEOF+# Don't try gcc -ansi; that turns off useful extensions and+# breaks some systems' header files.+# AIX			-qlanglvl=ansi+# Ultrix and OSF/1	-std1+# HP-UX 10.20 and later	-Ae+# HP-UX older versions	-Aa -D_HPUX_SOURCE+# SVR4			-Xc -D__EXTENSIONS__+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"+do+  CC="$ac_save_CC $ac_arg"+  rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_cv_prog_cc_stdc=$ac_arg+break+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.$ac_objext+done+rm -f conftest.$ac_ext conftest.$ac_objext+CC=$ac_save_CC++fi++case "x$ac_cv_prog_cc_stdc" in+  x|xno)+    echo "$as_me:$LINENO: result: none needed" >&5+echo "${ECHO_T}none needed" >&6 ;;+  *)+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6+    CC="$CC $ac_cv_prog_cc_stdc" ;;+esac++# Some people use a C++ compiler to compile C.  Since we use `exit',+# in C++ we need to declare it.  In case someone uses the same compiler+# for both compiling C and C++ we need to have the C++ compiler decide+# the declaration of exit, since it's the most demanding environment.+cat >conftest.$ac_ext <<_ACEOF+#ifndef __cplusplus+  choke me+#endif+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  for ac_declaration in \+   ''\+   '#include <stdlib.h>' \+   'extern "C" void std::exit (int) throw (); using std::exit;' \+   'extern "C" void std::exit (int); using std::exit;' \+   'extern "C" void exit (int) throw ();' \+   'extern "C" void exit (int);' \+   'void exit (int);'+do+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdlib.h>+$ac_declaration+int+main ()+{+exit (42);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  :+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++continue+fi+rm -f conftest.$ac_objext conftest.$ac_ext+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_declaration+int+main ()+{+exit (42);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  break+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.$ac_objext conftest.$ac_ext+done+rm -f conftest*+if test -n "$ac_declaration"; then+  echo '#ifdef __cplusplus' >>confdefs.h+  echo $ac_declaration      >>confdefs.h+  echo '#endif'             >>confdefs.h+fi++else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.$ac_objext conftest.$ac_ext+ac_ext=c+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+++echo "$as_me:$LINENO: checking for library containing alGenSources" >&5+echo $ECHO_N "checking for library containing alGenSources... $ECHO_C" >&6+if test "${ac_cv_search_alGenSources+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  ac_func_search_save_LIBS=$LIBS+ac_cv_search_alGenSources=no+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++/* Override any gcc2 internal prototype to avoid an error.  */+#ifdef __cplusplus+extern "C"+#endif+/* We use char because int might match the return type of a gcc2+   builtin and then its argument prototype would still apply.  */+char alGenSources ();+int+main ()+{+alGenSources ();+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_cv_search_alGenSources="none required"+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext+if test "$ac_cv_search_alGenSources" = no; then+  for ac_lib in openal openal32; do+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"+    cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */++/* Override any gcc2 internal prototype to avoid an error.  */+#ifdef __cplusplus+extern "C"+#endif+/* We use char because int might match the return type of a gcc2+   builtin and then its argument prototype would still apply.  */+char alGenSources ();+int+main ()+{+alGenSources ();+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_cv_search_alGenSources="-l$ac_lib"+break+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fi+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext+  done+fi+LIBS=$ac_func_search_save_LIBS+fi+echo "$as_me:$LINENO: result: $ac_cv_search_alGenSources" >&5+echo "${ECHO_T}$ac_cv_search_alGenSources" >&6+if test "$ac_cv_search_alGenSources" != no; then+  test "$ac_cv_search_alGenSources" = "none required" || LIBS="$ac_cv_search_alGenSources $LIBS"+  AL_LIBS="$ac_cv_search_alGenSources"+fi++test x"$AL_LIBS" = x"none required" && AL_LIBS=+++if test "$AL_LIBS" = no; then+  { echo "$as_me:$LINENO: WARNING: no OpenAL library found, so this package will not be built" >&5+echo "$as_me: WARNING: no OpenAL library found, so this package will not be built" >&2;}+else++# Ugly...+AL_FRAMEWORKS=+case $host_os in+darwin*)+  AL_FRAMEWORKS=OpenAL+  ;;+esac+++ac_ext=c+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+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+      # Double quotes because CPP needs to be expanded+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"+    do+      ac_preproc_ok=false+for ac_c_preproc_warn_flag in '' yes+do+  # Use a header file that comes with gcc, so configuring glibc+  # with a fresh cross-compiler works.+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since+  # <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+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#ifdef __STDC__+# include <limits.h>+#else+# include <assert.h>+#endif+                     Syntax error+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  :+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  # Broken: fails on valid input.+continue+fi+rm -f conftest.err conftest.$ac_ext++  # OK, works on sane cases.  Now check whether non-existent headers+  # can be detected and how.+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <ac_nonexistent.h>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  # Broken: success on invalid input.+continue+else+  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++done+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.+rm -f conftest.err conftest.$ac_ext+if $ac_preproc_ok; then+  break+fi++    done+    ac_cv_prog_CPP=$CPP++fi+  CPP=$ac_cv_prog_CPP+else+  ac_cv_prog_CPP=$CPP+fi+echo "$as_me:$LINENO: result: $CPP" >&5+echo "${ECHO_T}$CPP" >&6+ac_preproc_ok=false+for ac_c_preproc_warn_flag in '' yes+do+  # Use a header file that comes with gcc, so configuring glibc+  # with a fresh cross-compiler works.+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since+  # <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+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#ifdef __STDC__+# include <limits.h>+#else+# include <assert.h>+#endif+                     Syntax error+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  :+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  # Broken: fails on valid input.+continue+fi+rm -f conftest.err conftest.$ac_ext++  # OK, works on sane cases.  Now check whether non-existent headers+  # can be detected and how.+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <ac_nonexistent.h>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  # Broken: success on invalid input.+continue+else+  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++done+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.+rm -f conftest.err conftest.$ac_ext+if $ac_preproc_ok; then+  :+else+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check+See \`config.log' for more details." >&5+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+fi++ac_ext=c+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+++echo "$as_me:$LINENO: checking for egrep" >&5+echo $ECHO_N "checking for egrep... $ECHO_C" >&6+if test "${ac_cv_prog_egrep+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1+    then ac_cv_prog_egrep='grep -E'+    else ac_cv_prog_egrep='egrep'+    fi+fi+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5+echo "${ECHO_T}$ac_cv_prog_egrep" >&6+ EGREP=$ac_cv_prog_egrep+++echo "$as_me:$LINENO: checking for ANSI C header files" >&5+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6+if test "${ac_cv_header_stdc+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdlib.h>+#include <stdarg.h>+#include <string.h>+#include <float.h>++int+main ()+{++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_cv_header_stdc=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_cv_header_stdc=no+fi+rm -f conftest.$ac_objext conftest.$ac_ext++if test $ac_cv_header_stdc = yes; then+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <string.h>++_ACEOF+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |+  $EGREP "memchr" >/dev/null 2>&1; then+  :+else+  ac_cv_header_stdc=no+fi+rm -f conftest*++fi++if test $ac_cv_header_stdc = yes; then+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdlib.h>++_ACEOF+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |+  $EGREP "free" >/dev/null 2>&1; then+  :+else+  ac_cv_header_stdc=no+fi+rm -f conftest*++fi++if test $ac_cv_header_stdc = yes; then+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.+  if test "$cross_compiling" = yes; then+  :+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <ctype.h>+#if ((' ' & 0x0FF) == 0x020)+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))+#else+# define ISLOWER(c) \+                   (('a' <= (c) && (c) <= 'i') \+                     || ('j' <= (c) && (c) <= 'r') \+                     || ('s' <= (c) && (c) <= 'z'))+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))+#endif++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))+int+main ()+{+  int i;+  for (i = 0; i < 256; i++)+    if (XOR (islower (i), ISLOWER (i))+        || toupper (i) != TOUPPER (i))+      exit(2);+  exit (0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  :+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+ac_cv_header_stdc=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+fi+fi+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5+echo "${ECHO_T}$ac_cv_header_stdc" >&6+if test $ac_cv_header_stdc = yes; then++cat >>confdefs.h <<\_ACEOF+#define STDC_HEADERS 1+_ACEOF++fi++# On IRIX 5.3, sys/types and inttypes.h are conflicting.++++++++++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \+                  inttypes.h stdint.h unistd.h+do+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`+echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default++#include <$ac_header>+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  eval "$as_ac_Header=yes"+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++eval "$as_ac_Header=no"+fi+rm -f conftest.$ac_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6+if test `eval echo '${'$as_ac_Header'}'` = yes; then+  cat >>confdefs.h <<_ACEOF+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1+_ACEOF++fi++done+++if test -z "$fp_found_al_header"; then+  fp_found_al_header=no+++for ac_header in AL/al.h OpenAL/al.h+do+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6+else+  # Is the header compilable?+echo "$as_me:$LINENO: checking $ac_header usability" >&5+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default+#include <$ac_header>+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_header_compiler=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_header_compiler=no+fi+rm -f conftest.$ac_objext conftest.$ac_ext+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5+echo "${ECHO_T}$ac_header_compiler" >&6++# Is the header present?+echo "$as_me:$LINENO: checking $ac_header presence" >&5+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <$ac_header>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  ac_header_preproc=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  ac_header_preproc=no+fi+rm -f conftest.err conftest.$ac_ext+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5+echo "${ECHO_T}$ac_header_preproc" >&6++# So?  What about this header?+case $ac_header_compiler:$ac_header_preproc in+  yes:no )+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}+    (+      cat <<\_ASBOX+## ------------------------------------ ##+## Report this to bug-autoconf@gnu.org. ##+## ------------------------------------ ##+_ASBOX+    ) |+      sed "s/^/$as_me: WARNING:     /" >&2+    ;;+  no:yes )+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}+    (+      cat <<\_ASBOX+## ------------------------------------ ##+## Report this to bug-autoconf@gnu.org. ##+## ------------------------------------ ##+_ASBOX+    ) |+      sed "s/^/$as_me: WARNING:     /" >&2+    ;;+esac+echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  eval "$as_ac_Header=$ac_header_preproc"+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6++fi+if test `eval echo '${'$as_ac_Header'}'` = yes; then+  cat >>confdefs.h <<_ACEOF+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1+_ACEOF+ fp_found_al_header=yes; break+fi++done++fi++if test -z "$fp_found_alc_header"; then+  fp_found_alc_header=no+++for ac_header in AL/alc.h OpenAL/alc.h+do+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6+else+  # Is the header compilable?+echo "$as_me:$LINENO: checking $ac_header usability" >&5+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default+#include <$ac_header>+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_header_compiler=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_header_compiler=no+fi+rm -f conftest.$ac_objext conftest.$ac_ext+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5+echo "${ECHO_T}$ac_header_compiler" >&6++# Is the header present?+echo "$as_me:$LINENO: checking $ac_header presence" >&5+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <$ac_header>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  ac_header_preproc=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  ac_header_preproc=no+fi+rm -f conftest.err conftest.$ac_ext+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5+echo "${ECHO_T}$ac_header_preproc" >&6++# So?  What about this header?+case $ac_header_compiler:$ac_header_preproc in+  yes:no )+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}+    (+      cat <<\_ASBOX+## ------------------------------------ ##+## Report this to bug-autoconf@gnu.org. ##+## ------------------------------------ ##+_ASBOX+    ) |+      sed "s/^/$as_me: WARNING:     /" >&2+    ;;+  no:yes )+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}+    (+      cat <<\_ASBOX+## ------------------------------------ ##+## Report this to bug-autoconf@gnu.org. ##+## ------------------------------------ ##+_ASBOX+    ) |+      sed "s/^/$as_me: WARNING:     /" >&2+    ;;+esac+echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  eval "$as_ac_Header=$ac_header_preproc"+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6++fi+if test `eval echo '${'$as_ac_Header'}'` = yes; then+  cat >>confdefs.h <<_ACEOF+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1+_ACEOF+ fp_found_alc_header=yes; break+fi++done++fi++if test -z "$AL_FRAMEWORKS" && test x"$fp_found_al_header$fp_found_alc_header" != xyesyes; then+  { echo "$as_me:$LINENO: WARNING: no OpenAL headers found, so this package will not be built" >&5+echo "$as_me: WARNING: no OpenAL headers found, so this package will not be built" >&2;}+else++AL_BUILD_PACKAGE=yes++++for ac_header in AL/alext.h OpenAL/alext.h+do+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6+else+  # Is the header compilable?+echo "$as_me:$LINENO: checking $ac_header usability" >&5+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default+#include <$ac_header>+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_header_compiler=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_header_compiler=no+fi+rm -f conftest.$ac_objext conftest.$ac_ext+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5+echo "${ECHO_T}$ac_header_compiler" >&6++# Is the header present?+echo "$as_me:$LINENO: checking $ac_header presence" >&5+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <$ac_header>+_ACEOF+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&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+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } >/dev/null; then+  if test -s conftest.err; then+    ac_cpp_err=$ac_c_preproc_warn_flag+  else+    ac_cpp_err=+  fi+else+  ac_cpp_err=yes+fi+if test -z "$ac_cpp_err"; then+  ac_header_preproc=yes+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++  ac_header_preproc=no+fi+rm -f conftest.err conftest.$ac_ext+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5+echo "${ECHO_T}$ac_header_preproc" >&6++# So?  What about this header?+case $ac_header_compiler:$ac_header_preproc in+  yes:no )+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}+    (+      cat <<\_ASBOX+## ------------------------------------ ##+## Report this to bug-autoconf@gnu.org. ##+## ------------------------------------ ##+_ASBOX+    ) |+      sed "s/^/$as_me: WARNING:     /" >&2+    ;;+  no:yes )+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}+    (+      cat <<\_ASBOX+## ------------------------------------ ##+## Report this to bug-autoconf@gnu.org. ##+## ------------------------------------ ##+_ASBOX+    ) |+      sed "s/^/$as_me: WARNING:     /" >&2+    ;;+esac+echo "$as_me:$LINENO: checking for $ac_header" >&5+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6+if eval "test \"\${$as_ac_Header+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  eval "$as_ac_Header=$ac_header_preproc"+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6++fi+if test `eval echo '${'$as_ac_Header'}'` = yes; then+  cat >>confdefs.h <<_ACEOF+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1+_ACEOF+ break+fi++done++++echo "$as_me:$LINENO: checking whether alcCloseDevice returns void" >&5+echo $ECHO_N "checking whether alcCloseDevice returns void... $ECHO_C" >&6+if test "${fp_cv_func_alcclosedevice_void+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++int+main ()+{+int x = (int)alcCloseDevice(NULL);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fp_cv_func_alcclosedevice_void=no+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fp_cv_func_alcclosedevice_void=yes+fi+rm -f conftest.$ac_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $fp_cv_func_alcclosedevice_void" >&5+echo "${ECHO_T}$fp_cv_func_alcclosedevice_void" >&6+if test x"$fp_cv_func_alcclosedevice_void" = xyes; then++cat >>confdefs.h <<\_ACEOF+#define ALCCLOSEDEVICE_VOID 1+_ACEOF++fi+++echo "$as_me:$LINENO: checking whether alcMakeContextCurrent returns void" >&5+echo $ECHO_N "checking whether alcMakeContextCurrent returns void... $ECHO_C" >&6+if test "${fp_cv_func_alcmakecontextcurrent_void+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++int+main ()+{+int x = (int)alcMakeContextCurrent(NULL);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fp_cv_func_alcmakecontextcurrent_void=no+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fp_cv_func_alcmakecontextcurrent_void=yes+fi+rm -f conftest.$ac_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $fp_cv_func_alcmakecontextcurrent_void" >&5+echo "${ECHO_T}$fp_cv_func_alcmakecontextcurrent_void" >&6+if test x"$fp_cv_func_alcmakecontextcurrent_void)" = xyes; then++cat >>confdefs.h <<\_ACEOF+#define ALCMAKECONTEXTCURRENT_VOID 1+_ACEOF++fi+++echo "$as_me:$LINENO: checking whether alcProcessContext returns void" >&5+echo $ECHO_N "checking whether alcProcessContext returns void... $ECHO_C" >&6+if test "${fp_cv_func_alcprocesscontext_void+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++int+main ()+{+int x = (int)alcProcessContext(NULL);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fp_cv_func_alcprocesscontext_void=no+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fp_cv_func_alcprocesscontext_void=yes+fi+rm -f conftest.$ac_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $fp_cv_func_alcprocesscontext_void" >&5+echo "${ECHO_T}$fp_cv_func_alcprocesscontext_void" >&6+if test x"$fp_cv_func_alcprocesscontext_void" = xyes; then++cat >>confdefs.h <<\_ACEOF+#define ALCPROCESSCONTEXT_VOID 1+_ACEOF++fi+++echo "$as_me:$LINENO: checking whether alcDestroyContext returns void" >&5+echo $ECHO_N "checking whether alcDestroyContext returns void... $ECHO_C" >&6+if test "${fp_cv_func_alcdestroycontext_void+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+$ac_includes_default+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++int+main ()+{+int x = (int)alcDestroyContext(NULL);+  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fp_cv_func_alcdestroycontext_void=no+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++fp_cv_func_alcdestroycontext_void=yes+fi+rm -f conftest.$ac_objext conftest.$ac_ext+fi+echo "$as_me:$LINENO: result: $fp_cv_func_alcdestroycontext_void" >&5+echo "${ECHO_T}$fp_cv_func_alcdestroycontext_void" >&6+if test x"$fp_cv_func_alcdestroycontext_void" = xyes; then++cat >>confdefs.h <<\_ACEOF+#define ALCDESTROYCONTEXT_VOID 1+_ACEOF++fi+++echo "$as_me:$LINENO: checking Haskell type for ALboolean" >&5+echo $ECHO_N "checking Haskell type for ALboolean... $ECHO_C" >&6+if test "${fptools_cv_htype_ALboolean+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALboolean=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALboolean=NotReallyATypeCross; fptools_cv_htype_sup_ALboolean=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALboolean testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALboolean=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALboolean=NotReallyAType; fptools_cv_htype_sup_ALboolean=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALboolean" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALboolean" >&5+echo "${ECHO_T}$fptools_cv_htype_ALboolean" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALBOOLEAN $fptools_cv_htype_ALboolean+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALchar" >&5+echo $ECHO_N "checking Haskell type for ALchar... $ECHO_C" >&6+if test "${fptools_cv_htype_ALchar+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALchar=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALchar=NotReallyATypeCross; fptools_cv_htype_sup_ALchar=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALchar testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALchar=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALchar=Int8+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALchar" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALchar" >&5+echo "${ECHO_T}$fptools_cv_htype_ALchar" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCHAR $fptools_cv_htype_ALchar+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALbyte" >&5+echo $ECHO_N "checking Haskell type for ALbyte... $ECHO_C" >&6+if test "${fptools_cv_htype_ALbyte+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALbyte=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALbyte=NotReallyATypeCross; fptools_cv_htype_sup_ALbyte=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALbyte testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALbyte=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALbyte=NotReallyAType; fptools_cv_htype_sup_ALbyte=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALbyte" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALbyte" >&5+echo "${ECHO_T}$fptools_cv_htype_ALbyte" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALBYTE $fptools_cv_htype_ALbyte+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALubyte" >&5+echo $ECHO_N "checking Haskell type for ALubyte... $ECHO_C" >&6+if test "${fptools_cv_htype_ALubyte+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALubyte=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALubyte=NotReallyATypeCross; fptools_cv_htype_sup_ALubyte=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALubyte testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALubyte=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALubyte=NotReallyAType; fptools_cv_htype_sup_ALubyte=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALubyte" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALubyte" >&5+echo "${ECHO_T}$fptools_cv_htype_ALubyte" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALUBYTE $fptools_cv_htype_ALubyte+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALshort" >&5+echo $ECHO_N "checking Haskell type for ALshort... $ECHO_C" >&6+if test "${fptools_cv_htype_ALshort+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALshort=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALshort=NotReallyATypeCross; fptools_cv_htype_sup_ALshort=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALshort testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALshort=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALshort=NotReallyAType; fptools_cv_htype_sup_ALshort=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALshort" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALshort" >&5+echo "${ECHO_T}$fptools_cv_htype_ALshort" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALSHORT $fptools_cv_htype_ALshort+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALushort" >&5+echo $ECHO_N "checking Haskell type for ALushort... $ECHO_C" >&6+if test "${fptools_cv_htype_ALushort+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALushort=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALushort=NotReallyATypeCross; fptools_cv_htype_sup_ALushort=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALushort testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALushort=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALushort=NotReallyAType; fptools_cv_htype_sup_ALushort=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALushort" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALushort" >&5+echo "${ECHO_T}$fptools_cv_htype_ALushort" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALUSHORT $fptools_cv_htype_ALushort+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALint" >&5+echo $ECHO_N "checking Haskell type for ALint... $ECHO_C" >&6+if test "${fptools_cv_htype_ALint+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALint=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALint=NotReallyATypeCross; fptools_cv_htype_sup_ALint=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALint testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALint=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALint=NotReallyAType; fptools_cv_htype_sup_ALint=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALint" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALint" >&5+echo "${ECHO_T}$fptools_cv_htype_ALint" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALINT $fptools_cv_htype_ALint+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALuint" >&5+echo $ECHO_N "checking Haskell type for ALuint... $ECHO_C" >&6+if test "${fptools_cv_htype_ALuint+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALuint=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALuint=NotReallyATypeCross; fptools_cv_htype_sup_ALuint=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALuint testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALuint=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALuint=NotReallyAType; fptools_cv_htype_sup_ALuint=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALuint" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALuint" >&5+echo "${ECHO_T}$fptools_cv_htype_ALuint" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALUINT $fptools_cv_htype_ALuint+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALsizei" >&5+echo $ECHO_N "checking Haskell type for ALsizei... $ECHO_C" >&6+if test "${fptools_cv_htype_ALsizei+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALsizei=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALsizei=NotReallyATypeCross; fptools_cv_htype_sup_ALsizei=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALsizei testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALsizei=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALsizei=NotReallyAType; fptools_cv_htype_sup_ALsizei=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALsizei" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALsizei" >&5+echo "${ECHO_T}$fptools_cv_htype_ALsizei" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALSIZEI $fptools_cv_htype_ALsizei+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALenum" >&5+echo $ECHO_N "checking Haskell type for ALenum... $ECHO_C" >&6+if test "${fptools_cv_htype_ALenum+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALenum=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALenum=NotReallyATypeCross; fptools_cv_htype_sup_ALenum=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALenum testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALenum=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALenum=NotReallyAType; fptools_cv_htype_sup_ALenum=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALenum" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALenum" >&5+echo "${ECHO_T}$fptools_cv_htype_ALenum" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALENUM $fptools_cv_htype_ALenum+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALfloat" >&5+echo $ECHO_N "checking Haskell type for ALfloat... $ECHO_C" >&6+if test "${fptools_cv_htype_ALfloat+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALfloat=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALfloat=NotReallyATypeCross; fptools_cv_htype_sup_ALfloat=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALfloat testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALfloat=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALfloat=NotReallyAType; fptools_cv_htype_sup_ALfloat=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALfloat" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALfloat" >&5+echo "${ECHO_T}$fptools_cv_htype_ALfloat" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALFLOAT $fptools_cv_htype_ALfloat+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALdouble" >&5+echo $ECHO_N "checking Haskell type for ALdouble... $ECHO_C" >&6+if test "${fptools_cv_htype_ALdouble+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALdouble=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALdouble=NotReallyATypeCross; fptools_cv_htype_sup_ALdouble=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALdouble testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALdouble=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALdouble=NotReallyAType; fptools_cv_htype_sup_ALdouble=no+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALdouble" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALdouble" >&5+echo "${ECHO_T}$fptools_cv_htype_ALdouble" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALDOUBLE $fptools_cv_htype_ALdouble+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi+++echo "$as_me:$LINENO: checking Haskell type for ALCboolean" >&5+echo $ECHO_N "checking Haskell type for ALCboolean... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCboolean+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCboolean=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCboolean=NotReallyATypeCross; fptools_cv_htype_sup_ALCboolean=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCboolean testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCboolean=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCboolean=Int8+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCboolean" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCboolean" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCboolean" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCBOOLEAN $fptools_cv_htype_ALCboolean+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCchar" >&5+echo $ECHO_N "checking Haskell type for ALCchar... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCchar+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCchar=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCchar=NotReallyATypeCross; fptools_cv_htype_sup_ALCchar=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCchar testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCchar=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCchar=Int8+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCchar" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCchar" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCchar" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCCHAR $fptools_cv_htype_ALCchar+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCbyte" >&5+echo $ECHO_N "checking Haskell type for ALCbyte... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCbyte+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCbyte=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCbyte=NotReallyATypeCross; fptools_cv_htype_sup_ALCbyte=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCbyte testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCbyte=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCbyte=Int8+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCbyte" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCbyte" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCbyte" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCBYTE $fptools_cv_htype_ALCbyte+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCubyte" >&5+echo $ECHO_N "checking Haskell type for ALCubyte... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCubyte+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCubyte=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCubyte=NotReallyATypeCross; fptools_cv_htype_sup_ALCubyte=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCubyte testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCubyte=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCubyte=Word8+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCubyte" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCubyte" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCubyte" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCUBYTE $fptools_cv_htype_ALCubyte+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCshort" >&5+echo $ECHO_N "checking Haskell type for ALCshort... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCshort+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCshort=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCshort=NotReallyATypeCross; fptools_cv_htype_sup_ALCshort=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCshort testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCshort=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCshort=Int16+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCshort" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCshort" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCshort" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCSHORT $fptools_cv_htype_ALCshort+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCushort" >&5+echo $ECHO_N "checking Haskell type for ALCushort... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCushort+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCushort=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCushort=NotReallyATypeCross; fptools_cv_htype_sup_ALCushort=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCushort testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCushort=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCushort=Word16+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCushort" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCushort" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCushort" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCUSHORT $fptools_cv_htype_ALCushort+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCint" >&5+echo $ECHO_N "checking Haskell type for ALCint... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCint+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCint=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCint=NotReallyATypeCross; fptools_cv_htype_sup_ALCint=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCint testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCint=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCint=Int32+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCint" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCint" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCint" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCINT $fptools_cv_htype_ALCint+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCuint" >&5+echo $ECHO_N "checking Haskell type for ALCuint... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCuint+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCuint=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCuint=NotReallyATypeCross; fptools_cv_htype_sup_ALCuint=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCuint testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCuint=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCuint=Word32+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCuint" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCuint" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCuint" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCUINT $fptools_cv_htype_ALCuint+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCsizei" >&5+echo $ECHO_N "checking Haskell type for ALCsizei... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCsizei+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCsizei=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCsizei=NotReallyATypeCross; fptools_cv_htype_sup_ALCsizei=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCsizei testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCsizei=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCsizei=Int32+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCsizei" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCsizei" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCsizei" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCSIZEI $fptools_cv_htype_ALCsizei+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCenum" >&5+echo $ECHO_N "checking Haskell type for ALCenum... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCenum+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCenum=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCenum=NotReallyATypeCross; fptools_cv_htype_sup_ALCenum=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCenum testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCenum=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCenum=Int32+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCenum" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCenum" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCenum" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCENUM $fptools_cv_htype_ALCenum+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCfloat" >&5+echo $ECHO_N "checking Haskell type for ALCfloat... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCfloat+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCfloat=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCfloat=NotReallyATypeCross; fptools_cv_htype_sup_ALCfloat=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCfloat testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCfloat=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCfloat=Float+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCfloat" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCfloat" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCfloat" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCFLOAT $fptools_cv_htype_ALCfloat+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++echo "$as_me:$LINENO: checking Haskell type for ALCdouble" >&5+echo $ECHO_N "checking Haskell type for ALCdouble... $ECHO_C" >&6+if test "${fptools_cv_htype_ALCdouble+set}" = set; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  fptools_cv_htype_sup_ALCdouble=yes+fp_check_htype_save_cppflags="$CPPFLAGS"+CPPFLAGS="$CPPFLAGS $X_CFLAGS"+if test "$cross_compiling" = yes; then+  fptools_cv_htype_ALCdouble=NotReallyATypeCross; fptools_cv_htype_sup_ALCdouble=no+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#include <stddef.h>++#if HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif++#if HAVE_UNISTD_H+# include <unistd.h>+#endif++#if HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif++#if HAVE_FCNTL_H+# include <fcntl.h>+#endif++#if HAVE_SIGNAL_H+# include <signal.h>+#endif++#if HAVE_TIME_H+# include <time.h>+#endif++#if HAVE_TERMIOS_H+# include <termios.h>+#endif++#if HAVE_STRING_H+# include <string.h>+#endif++#if HAVE_CTYPE_H+# include <ctype.h>+#endif++#if defined(HAVE_GL_GL_H)+# include <GL/gl.h>+#elif defined(HAVE_OPENGL_GL_H)+# include <OpenGL/gl.h>+#endif++#if defined(HAVE_AL_AL_H)+# include <AL/al.h>+#elif defined(HAVE_OPENAL_AL_H)+# include <OpenAL/al.h>+#endif++#if defined(HAVE_AL_ALC_H)+# include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+# include <OpenAL/alc.h>+#endif++#if HAVE_SYS_RESOURCE_H+# include <sys/resource.h>+#endif++typedef ALCdouble testing;++main() {+  FILE *f=fopen("conftestval", "w");+  if (!f) exit(1);+  if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {+    fprintf(f, "%s%d\n",+           ((testing)(-1) < (testing)0) ? "Int" : "Word",+           sizeof(testing)*8);+  } else {+    fprintf(f,"%s\n",+           (sizeof(testing) >  sizeof(double)) ? "LDouble" :+           (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");+  }+  fclose(f);+  exit(0);+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fptools_cv_htype_ALCdouble=`cat conftestval`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fptools_cv_htype_ALCdouble=Double+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+CPPFLAGS="$fp_check_htype_save_cppflags"+fi+ if test "$fptools_cv_htype_sup_ALCdouble" = yes; then+  echo "$as_me:$LINENO: result: $fptools_cv_htype_ALCdouble" >&5+echo "${ECHO_T}$fptools_cv_htype_ALCdouble" >&6++cat >>confdefs.h <<_ACEOF+#define HTYPE_ALCDOUBLE $fptools_cv_htype_ALCdouble+_ACEOF++else+  echo "$as_me:$LINENO: result: not supported" >&5+echo "${ECHO_T}not supported" >&6+fi++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++for fp_const_name in AL_FALSE AL_TRUE AL_NO_ERROR AL_INVALID_NAME AL_INVALID_ENUM AL_INVALID_VALUE AL_INVALID_OPERATION AL_OUT_OF_MEMORY AL_DOPPLER_FACTOR AL_SPEED_OF_SOUND AL_DISTANCE_MODEL AL_VERSION AL_RENDERER AL_VENDOR AL_EXTENSIONS AL_NONE AL_INVERSE_DISTANCE AL_INVERSE_DISTANCE_CLAMPED AL_LINEAR_DISTANCE AL_LINEAR_DISTANCE_CLAMPED AL_EXPONENT_DISTANCE AL_EXPONENT_DISTANCE_CLAMPED AL_POSITION AL_VELOCITY AL_GAIN AL_ORIENTATION AL_SOURCE_RELATIVE AL_SOURCE_TYPE AL_LOOPING AL_BUFFER AL_BUFFERS_QUEUED AL_BUFFERS_PROCESSED AL_MIN_GAIN AL_MAX_GAIN AL_REFERENCE_DISTANCE AL_ROLLOFF_FACTOR AL_MAX_DISTANCE AL_PITCH AL_DIRECTION AL_CONE_INNER_ANGLE AL_CONE_OUTER_ANGLE AL_CONE_OUTER_GAIN AL_SEC_OFFSET AL_SAMPLE_OFFSET AL_BYTE_OFFSET AL_SOURCE_STATE AL_UNDETERMINED AL_STATIC AL_STREAMING AL_INITIAL AL_PLAYING AL_PAUSED AL_STOPPED AL_FREQUENCY AL_SIZE AL_BITS AL_CHANNELS AL_FORMAT_MONO8 AL_FORMAT_MONO16 AL_FORMAT_STEREO8 AL_FORMAT_STEREO16 ALC_FALSE ALC_TRUE ALC_FREQUENCY ALC_REFRESH ALC_SYNC ALC_MONO_SOURCES ALC_STEREO_SOURCES ALC_NO_ERROR ALC_INVALID_DEVICE ALC_INVALID_CONTEXT ALC_INVALID_ENUM ALC_INVALID_VALUE ALC_INVALID_OPERATION ALC_OUT_OF_MEMORY ALC_DEFAULT_DEVICE_SPECIFIER ALC_DEVICE_SPECIFIER ALC_EXTENSIONS ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER ALC_CAPTURE_DEVICE_SPECIFIER ALC_ATTRIBUTES_SIZE ALC_ALL_ATTRIBUTES ALC_MAJOR_VERSION ALC_MINOR_VERSION ALC_CAPTURE_SAMPLES+do+as_fp_Cache=`echo "fp_cv_const_$fp_const_name" | $as_tr_sh`+echo "$as_me:$LINENO: checking value of $fp_const_name" >&5+echo $ECHO_N "checking value of $fp_const_name... $ECHO_C" >&6+if eval "test \"\${$as_fp_Cache+set}\" = set"; then+  echo $ECHO_N "(cached) $ECHO_C" >&6+else+  if test "$cross_compiling" = yes; then+  # Depending upon the size, compute the lo and hi bounds.+cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++#if defined(HAVE_AL_ALEXT_H)+#include <AL/alext.h>+#elif defined(HAVE_OPENAL_ALEXT_H)+#include <OpenAL/alext.h>+#endif++#ifndef AL_SPEED_OF_SOUND+#define AL_SPEED_OF_SOUND 0xC003+#endif++#ifndef AL_LINEAR_DISTANCE+#define AL_LINEAR_DISTANCE 0xD003+#endif++#ifndef AL_LINEAR_DISTANCE_CLAMPED+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004+#endif++#ifndef AL_EXPONENT_DISTANCE+#define AL_EXPONENT_DISTANCE 0xD005+#endif++#ifndef AL_EXPONENT_DISTANCE_CLAMPED+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006+#endif++#ifndef AL_SEC_OFFSET+#define AL_SEC_OFFSET 0x1024+#endif++#ifndef AL_SAMPLE_OFFSET+#define AL_SAMPLE_OFFSET 0x1025+#endif++#ifndef AL_BYTE_OFFSET+#define AL_BYTE_OFFSET 0x1026+#endif++#ifndef AL_UNDETERMINED+#define AL_UNDETERMINED 0x1030+#endif++#ifndef AL_STATIC+#define AL_STATIC 0x1028+#endif++#ifndef ALC_MONO_SOURCES+#define ALC_MONO_SOURCES 0x1010+#endif++#ifndef ALC_STEREO_SOURCES+#define ALC_STEREO_SOURCES 0x1011+#endif++#ifndef AL_INVALID_ENUM+#ifdef AL_ILLEGAL_ENUM+#define AL_INVALID_ENUM AL_ILLEGAL_ENUM+#else+#define AL_INVALID_ENUM 0xA002+#endif+#endif++#ifndef AL_INVALID_OPERATION+#ifdef AL_ILLEGAL_COMMAND+#define AL_INVALID_OPERATION AL_ILLEGAL_COMMAND+#else+#define AL_INVALID_OPERATION 0xA004+#endif+#endif++/* NOTE: THIS IS NOT IN ANY HEADER */+#ifndef ALC_INVALID_OPERATION+#define ALC_INVALID_OPERATION 0xA006+#endif++#ifndef ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311+#endif++#ifndef ALC_CAPTURE_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310+#endif++#ifndef ALC_CAPTURE_SAMPLES+#define ALC_CAPTURE_SAMPLES 0x312+#endif+++int+main ()+{+static int test_array [1 - 2 * !(($fp_const_name) >= 0)];+test_array [0] = 0++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_lo=0 ac_mid=0+  while :; do+    cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++#if defined(HAVE_AL_ALEXT_H)+#include <AL/alext.h>+#elif defined(HAVE_OPENAL_ALEXT_H)+#include <OpenAL/alext.h>+#endif++#ifndef AL_SPEED_OF_SOUND+#define AL_SPEED_OF_SOUND 0xC003+#endif++#ifndef AL_LINEAR_DISTANCE+#define AL_LINEAR_DISTANCE 0xD003+#endif++#ifndef AL_LINEAR_DISTANCE_CLAMPED+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004+#endif++#ifndef AL_EXPONENT_DISTANCE+#define AL_EXPONENT_DISTANCE 0xD005+#endif++#ifndef AL_EXPONENT_DISTANCE_CLAMPED+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006+#endif++#ifndef AL_SEC_OFFSET+#define AL_SEC_OFFSET 0x1024+#endif++#ifndef AL_SAMPLE_OFFSET+#define AL_SAMPLE_OFFSET 0x1025+#endif++#ifndef AL_BYTE_OFFSET+#define AL_BYTE_OFFSET 0x1026+#endif++#ifndef AL_UNDETERMINED+#define AL_UNDETERMINED 0x1030+#endif++#ifndef AL_STATIC+#define AL_STATIC 0x1028+#endif++#ifndef ALC_MONO_SOURCES+#define ALC_MONO_SOURCES 0x1010+#endif++#ifndef ALC_STEREO_SOURCES+#define ALC_STEREO_SOURCES 0x1011+#endif++#ifndef AL_INVALID_ENUM+#ifdef AL_ILLEGAL_ENUM+#define AL_INVALID_ENUM AL_ILLEGAL_ENUM+#else+#define AL_INVALID_ENUM 0xA002+#endif+#endif++#ifndef AL_INVALID_OPERATION+#ifdef AL_ILLEGAL_COMMAND+#define AL_INVALID_OPERATION AL_ILLEGAL_COMMAND+#else+#define AL_INVALID_OPERATION 0xA004+#endif+#endif++/* NOTE: THIS IS NOT IN ANY HEADER */+#ifndef ALC_INVALID_OPERATION+#define ALC_INVALID_OPERATION 0xA006+#endif++#ifndef ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311+#endif++#ifndef ALC_CAPTURE_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310+#endif++#ifndef ALC_CAPTURE_SAMPLES+#define ALC_CAPTURE_SAMPLES 0x312+#endif+++int+main ()+{+static int test_array [1 - 2 * !(($fp_const_name) <= $ac_mid)];+test_array [0] = 0++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_hi=$ac_mid; break+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_lo=`expr $ac_mid + 1`+                    if test $ac_lo -le $ac_mid; then+                      ac_lo= ac_hi=+                      break+                    fi+                    ac_mid=`expr 2 '*' $ac_mid + 1`+fi+rm -f conftest.$ac_objext conftest.$ac_ext+  done+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++#if defined(HAVE_AL_ALEXT_H)+#include <AL/alext.h>+#elif defined(HAVE_OPENAL_ALEXT_H)+#include <OpenAL/alext.h>+#endif++#ifndef AL_SPEED_OF_SOUND+#define AL_SPEED_OF_SOUND 0xC003+#endif++#ifndef AL_LINEAR_DISTANCE+#define AL_LINEAR_DISTANCE 0xD003+#endif++#ifndef AL_LINEAR_DISTANCE_CLAMPED+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004+#endif++#ifndef AL_EXPONENT_DISTANCE+#define AL_EXPONENT_DISTANCE 0xD005+#endif++#ifndef AL_EXPONENT_DISTANCE_CLAMPED+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006+#endif++#ifndef AL_SEC_OFFSET+#define AL_SEC_OFFSET 0x1024+#endif++#ifndef AL_SAMPLE_OFFSET+#define AL_SAMPLE_OFFSET 0x1025+#endif++#ifndef AL_BYTE_OFFSET+#define AL_BYTE_OFFSET 0x1026+#endif++#ifndef AL_UNDETERMINED+#define AL_UNDETERMINED 0x1030+#endif++#ifndef AL_STATIC+#define AL_STATIC 0x1028+#endif++#ifndef ALC_MONO_SOURCES+#define ALC_MONO_SOURCES 0x1010+#endif++#ifndef ALC_STEREO_SOURCES+#define ALC_STEREO_SOURCES 0x1011+#endif++#ifndef AL_INVALID_ENUM+#ifdef AL_ILLEGAL_ENUM+#define AL_INVALID_ENUM AL_ILLEGAL_ENUM+#else+#define AL_INVALID_ENUM 0xA002+#endif+#endif++#ifndef AL_INVALID_OPERATION+#ifdef AL_ILLEGAL_COMMAND+#define AL_INVALID_OPERATION AL_ILLEGAL_COMMAND+#else+#define AL_INVALID_OPERATION 0xA004+#endif+#endif++/* NOTE: THIS IS NOT IN ANY HEADER */+#ifndef ALC_INVALID_OPERATION+#define ALC_INVALID_OPERATION 0xA006+#endif++#ifndef ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311+#endif++#ifndef ALC_CAPTURE_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310+#endif++#ifndef ALC_CAPTURE_SAMPLES+#define ALC_CAPTURE_SAMPLES 0x312+#endif+++int+main ()+{+static int test_array [1 - 2 * !(($fp_const_name) < 0)];+test_array [0] = 0++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_hi=-1 ac_mid=-1+  while :; do+    cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++#if defined(HAVE_AL_ALEXT_H)+#include <AL/alext.h>+#elif defined(HAVE_OPENAL_ALEXT_H)+#include <OpenAL/alext.h>+#endif++#ifndef AL_SPEED_OF_SOUND+#define AL_SPEED_OF_SOUND 0xC003+#endif++#ifndef AL_LINEAR_DISTANCE+#define AL_LINEAR_DISTANCE 0xD003+#endif++#ifndef AL_LINEAR_DISTANCE_CLAMPED+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004+#endif++#ifndef AL_EXPONENT_DISTANCE+#define AL_EXPONENT_DISTANCE 0xD005+#endif++#ifndef AL_EXPONENT_DISTANCE_CLAMPED+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006+#endif++#ifndef AL_SEC_OFFSET+#define AL_SEC_OFFSET 0x1024+#endif++#ifndef AL_SAMPLE_OFFSET+#define AL_SAMPLE_OFFSET 0x1025+#endif++#ifndef AL_BYTE_OFFSET+#define AL_BYTE_OFFSET 0x1026+#endif++#ifndef AL_UNDETERMINED+#define AL_UNDETERMINED 0x1030+#endif++#ifndef AL_STATIC+#define AL_STATIC 0x1028+#endif++#ifndef ALC_MONO_SOURCES+#define ALC_MONO_SOURCES 0x1010+#endif++#ifndef ALC_STEREO_SOURCES+#define ALC_STEREO_SOURCES 0x1011+#endif++#ifndef AL_INVALID_ENUM+#ifdef AL_ILLEGAL_ENUM+#define AL_INVALID_ENUM AL_ILLEGAL_ENUM+#else+#define AL_INVALID_ENUM 0xA002+#endif+#endif++#ifndef AL_INVALID_OPERATION+#ifdef AL_ILLEGAL_COMMAND+#define AL_INVALID_OPERATION AL_ILLEGAL_COMMAND+#else+#define AL_INVALID_OPERATION 0xA004+#endif+#endif++/* NOTE: THIS IS NOT IN ANY HEADER */+#ifndef ALC_INVALID_OPERATION+#define ALC_INVALID_OPERATION 0xA006+#endif++#ifndef ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311+#endif++#ifndef ALC_CAPTURE_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310+#endif++#ifndef ALC_CAPTURE_SAMPLES+#define ALC_CAPTURE_SAMPLES 0x312+#endif+++int+main ()+{+static int test_array [1 - 2 * !(($fp_const_name) >= $ac_mid)];+test_array [0] = 0++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_lo=$ac_mid; break+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_hi=`expr '(' $ac_mid ')' - 1`+                       if test $ac_mid -le $ac_hi; then+                         ac_lo= ac_hi=+                         break+                       fi+                       ac_mid=`expr 2 '*' $ac_mid`+fi+rm -f conftest.$ac_objext conftest.$ac_ext+  done+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_lo= ac_hi=+fi+rm -f conftest.$ac_objext conftest.$ac_ext+fi+rm -f conftest.$ac_objext conftest.$ac_ext+# Binary search between lo and hi bounds.+while test "x$ac_lo" != "x$ac_hi"; do+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++#if defined(HAVE_AL_ALEXT_H)+#include <AL/alext.h>+#elif defined(HAVE_OPENAL_ALEXT_H)+#include <OpenAL/alext.h>+#endif++#ifndef AL_SPEED_OF_SOUND+#define AL_SPEED_OF_SOUND 0xC003+#endif++#ifndef AL_LINEAR_DISTANCE+#define AL_LINEAR_DISTANCE 0xD003+#endif++#ifndef AL_LINEAR_DISTANCE_CLAMPED+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004+#endif++#ifndef AL_EXPONENT_DISTANCE+#define AL_EXPONENT_DISTANCE 0xD005+#endif++#ifndef AL_EXPONENT_DISTANCE_CLAMPED+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006+#endif++#ifndef AL_SEC_OFFSET+#define AL_SEC_OFFSET 0x1024+#endif++#ifndef AL_SAMPLE_OFFSET+#define AL_SAMPLE_OFFSET 0x1025+#endif++#ifndef AL_BYTE_OFFSET+#define AL_BYTE_OFFSET 0x1026+#endif++#ifndef AL_UNDETERMINED+#define AL_UNDETERMINED 0x1030+#endif++#ifndef AL_STATIC+#define AL_STATIC 0x1028+#endif++#ifndef ALC_MONO_SOURCES+#define ALC_MONO_SOURCES 0x1010+#endif++#ifndef ALC_STEREO_SOURCES+#define ALC_STEREO_SOURCES 0x1011+#endif++#ifndef AL_INVALID_ENUM+#ifdef AL_ILLEGAL_ENUM+#define AL_INVALID_ENUM AL_ILLEGAL_ENUM+#else+#define AL_INVALID_ENUM 0xA002+#endif+#endif++#ifndef AL_INVALID_OPERATION+#ifdef AL_ILLEGAL_COMMAND+#define AL_INVALID_OPERATION AL_ILLEGAL_COMMAND+#else+#define AL_INVALID_OPERATION 0xA004+#endif+#endif++/* NOTE: THIS IS NOT IN ANY HEADER */+#ifndef ALC_INVALID_OPERATION+#define ALC_INVALID_OPERATION 0xA006+#endif++#ifndef ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311+#endif++#ifndef ALC_CAPTURE_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310+#endif++#ifndef ALC_CAPTURE_SAMPLES+#define ALC_CAPTURE_SAMPLES 0x312+#endif+++int+main ()+{+static int test_array [1 - 2 * !(($fp_const_name) <= $ac_mid)];+test_array [0] = 0++  ;+  return 0;+}+_ACEOF+rm -f conftest.$ac_objext+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5+  (eval $ac_compile) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } &&+         { ac_try='test -s conftest.$ac_objext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  ac_hi=$ac_mid+else+  echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++ac_lo=`expr '(' $ac_mid ')' + 1`+fi+rm -f conftest.$ac_objext conftest.$ac_ext+done+case $ac_lo in+?*) fp_check_const_result=$ac_lo;;+'') fp_check_const_result='-1' ;;+esac+else+  if test "$cross_compiling" = yes; then+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling+See \`config.log' for more details." >&5+echo "$as_me: error: cannot run test program while cross compiling+See \`config.log' for more details." >&2;}+   { (exit 1); exit 1; }; }+else+  cat >conftest.$ac_ext <<_ACEOF+#line $LINENO "configure"+/* confdefs.h.  */+_ACEOF+cat confdefs.h >>conftest.$ac_ext+cat >>conftest.$ac_ext <<_ACEOF+/* end confdefs.h.  */+#include <stdio.h>+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++#if defined(HAVE_AL_ALEXT_H)+#include <AL/alext.h>+#elif defined(HAVE_OPENAL_ALEXT_H)+#include <OpenAL/alext.h>+#endif++#ifndef AL_SPEED_OF_SOUND+#define AL_SPEED_OF_SOUND 0xC003+#endif++#ifndef AL_LINEAR_DISTANCE+#define AL_LINEAR_DISTANCE 0xD003+#endif++#ifndef AL_LINEAR_DISTANCE_CLAMPED+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004+#endif++#ifndef AL_EXPONENT_DISTANCE+#define AL_EXPONENT_DISTANCE 0xD005+#endif++#ifndef AL_EXPONENT_DISTANCE_CLAMPED+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006+#endif++#ifndef AL_SEC_OFFSET+#define AL_SEC_OFFSET 0x1024+#endif++#ifndef AL_SAMPLE_OFFSET+#define AL_SAMPLE_OFFSET 0x1025+#endif++#ifndef AL_BYTE_OFFSET+#define AL_BYTE_OFFSET 0x1026+#endif++#ifndef AL_UNDETERMINED+#define AL_UNDETERMINED 0x1030+#endif++#ifndef AL_STATIC+#define AL_STATIC 0x1028+#endif++#ifndef ALC_MONO_SOURCES+#define ALC_MONO_SOURCES 0x1010+#endif++#ifndef ALC_STEREO_SOURCES+#define ALC_STEREO_SOURCES 0x1011+#endif++#ifndef AL_INVALID_ENUM+#ifdef AL_ILLEGAL_ENUM+#define AL_INVALID_ENUM AL_ILLEGAL_ENUM+#else+#define AL_INVALID_ENUM 0xA002+#endif+#endif++#ifndef AL_INVALID_OPERATION+#ifdef AL_ILLEGAL_COMMAND+#define AL_INVALID_OPERATION AL_ILLEGAL_COMMAND+#else+#define AL_INVALID_OPERATION 0xA004+#endif+#endif++/* NOTE: THIS IS NOT IN ANY HEADER */+#ifndef ALC_INVALID_OPERATION+#define ALC_INVALID_OPERATION 0xA006+#endif++#ifndef ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311+#endif++#ifndef ALC_CAPTURE_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310+#endif++#ifndef ALC_CAPTURE_SAMPLES+#define ALC_CAPTURE_SAMPLES 0x312+#endif+++long longval () { return $fp_const_name; }+unsigned long ulongval () { return $fp_const_name; }+#include <stdio.h>+#include <stdlib.h>+int+main ()+{++  FILE *f = fopen ("conftest.val", "w");+  if (! f)+    exit (1);+  if (($fp_const_name) < 0)+    {+      long i = longval ();+      if (i != ($fp_const_name))+	exit (1);+      fprintf (f, "%ld\n", i);+    }+  else+    {+      unsigned long i = ulongval ();+      if (i != ($fp_const_name))+	exit (1);+      fprintf (f, "%lu\n", i);+    }+  exit (ferror (f) || fclose (f) != 0);++  ;+  return 0;+}+_ACEOF+rm -f conftest$ac_exeext+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5+  (eval $ac_link) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5+  (eval $ac_try) 2>&5+  ac_status=$?+  echo "$as_me:$LINENO: \$? = $ac_status" >&5+  (exit $ac_status); }; }; then+  fp_check_const_result=`cat conftest.val`+else+  echo "$as_me: program exited with status $ac_status" >&5+echo "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++( exit $ac_status )+fp_check_const_result='-1'+fi+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext+fi+fi+rm -f conftest.val+eval "$as_fp_Cache=$fp_check_const_result"+fi+echo "$as_me:$LINENO: result: `eval echo '${'$as_fp_Cache'}'`" >&5+echo "${ECHO_T}`eval echo '${'$as_fp_Cache'}'`" >&6+cat >>confdefs.h <<_ACEOF+#define `echo "CONST_$fp_const_name" | $as_tr_cpp` `eval echo '${'$as_fp_Cache'}'`+_ACEOF++done++++cat >>confdefs.h <<_ACEOF+#define AL_LIBS `echo '' $AL_LIBS | sed -e 's/-[^ ]*/,"&"/g' -e 's/^ *,//'`+_ACEOF++++cat >>confdefs.h <<_ACEOF+#define AL_FRAMEWORKS `echo '' $AL_FRAMEWORKS | sed -e 's/-[^ ]*/,"&"/g' -e 's/^ *,//'`+_ACEOF+++fi+fi+fi++if test "$AL_BUILD_PACKAGE" = yes; then+  BUILD_PACKAGE_BOOL=True+else+  BUILD_PACKAGE_BOOL=False+fi+++case "$host" in+*-mingw32) CALLCONV=stdcall ;;+*)      CALLCONV=ccall ;;+esac+++                    ac_config_files="$ac_config_files config.mk OpenAL.buildinfo"++cat >confcache <<\_ACEOF+# This file is a shell script that caches the results of configure+# tests run on this system so they can be shared between configure+# scripts and configure runs, see configure's option --config-cache.+# It is not useful on other systems.  If it contains results you don't+# want to keep, you may remove or edit it.+#+# config.status only pays attention to the cache file if you give it+# the --recheck option to rerun configure.+#+# `ac_cv_env_foo' variables (set or unset) will be overridden when+# loading this file, other *unset* `ac_cv_foo' will be assigned the+# following values.++_ACEOF++# The following way of writing the cache mishandles newlines in values,+# but we know of no workaround that is simple, portable, and efficient.+# So, don't put newlines in cache variables' values.+# Ultrix sh set writes to stderr and can't be redirected directly,+# and sets the high bit in the cache file unless we assign to the vars.+{+  (set) 2>&1 |+    case `(ac_space=' '; set | grep ac_space) 2>&1` in+    *ac_space=\ *)+      # `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"+      ;;+    *)+      # `set' quotes correctly as required by POSIX, so do not add quotes.+      sed -n \+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"+      ;;+    esac;+} |+  sed '+     t clear+     : clear+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/+     t end+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\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" && echo "updating cache $cache_file"+    cat confcache >$cache_file+  else+    echo "not updating unwritable cache $cache_file"+  fi+fi+rm -f confcache++test "x$prefix" = xNONE && prefix=$ac_default_prefix+# Let make expand exec_prefix.+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'++# VPATH may cause trouble with some makes, so we remove $(srcdir),+# ${srcdir} and @srcdir@ 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/;+s/:*$//;+s/^[^=]*=[ 	]*$//;+}'+fi++DEFS=-DHAVE_CONFIG_H++ac_libobjs=+ac_ltlibobjs=+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue+  # 1. Remove the extension, and $U if already installed.+  ac_i=`echo "$ac_i" |+         sed 's/\$U\././;s/\.o$//;s/\.obj$//'`+  # 2. Add them.+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'+done+LIBOBJS=$ac_libobjs++LTLIBOBJS=$ac_ltlibobjs++++: ${CONFIG_STATUS=./config.status}+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files $CONFIG_STATUS"+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5+echo "$as_me: creating $CONFIG_STATUS" >&6;}+cat >$CONFIG_STATUS <<_ACEOF+#! $SHELL+# Generated by $as_me.+# Run this file to recreate the current configuration.+# Compiler output produced by configure, useful for debugging+# configure, is in config.log if it exists.++debug=false+ac_cs_recheck=false+ac_cs_silent=false+SHELL=\${CONFIG_SHELL-$SHELL}+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF+## --------------------- ##+## M4sh Initialization.  ##+## --------------------- ##++# Be Bourne compatible+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then+  emulate sh+  NULLCMD=:+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which+  # is contrary to our usage.  Disable this feature.+  alias -g '${1+"$@"}'='"$@"'+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then+  set -o posix+fi++# Support unset when possible.+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then+  as_unset=unset+else+  as_unset=false+fi+++# Work around bugs in pre-3.0 UWIN ksh.+$as_unset ENV MAIL MAILPATH+PS1='$ '+PS2='> '+PS4='+ '++# NLS nuisances.+for as_var in \+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \+  LC_TELEPHONE LC_TIME+do+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then+    eval $as_var=C; export $as_var+  else+    $as_unset $as_var+  fi+done++# Required to use basename.+if expr a : '\(a\)' >/dev/null 2>&1; 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 ||+echo X/"$0" |+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }+  	  /^X\/\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+++# PATH needs CR, and LINENO needs CR and PATH.+# 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++# The user is always right.+if test "${PATH_SEPARATOR+set}" != set; then+  echo "#! /bin/sh" >conf$$.sh+  echo  "exit 0"   >>conf$$.sh+  chmod +x conf$$.sh+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then+    PATH_SEPARATOR=';'+  else+    PATH_SEPARATOR=:+  fi+  rm -f conf$$.sh+fi+++  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {+  # Find who we are.  Look in the path if we contain no path at all+  # relative or not.+  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++       ;;+  esac+  # We did not find ourselves, most probably we were run as `sh COMMAND'+  # in which case we are not to be found in the path.+  if test "x$as_myself" = x; then+    as_myself=$0+  fi+  if test ! -f "$as_myself"; then+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}+   { (exit 1); exit 1; }; }+  fi+  case $CONFIG_SHELL in+  '')+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH+do+  IFS=$as_save_IFS+  test -z "$as_dir" && as_dir=.+  for as_base in sh bash ksh sh5; do+	 case $as_dir in+	 /*)+	   if ("$as_dir/$as_base" -c '+  as_lineno_1=$LINENO+  as_lineno_2=$LINENO+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`+  test "x$as_lineno_1" != "x$as_lineno_2" &&+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }+	     CONFIG_SHELL=$as_dir/$as_base+	     export CONFIG_SHELL+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}+	   fi;;+	 esac+       done+done+;;+  esac++  # 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 before each line; the second 'sed' does the real+  # work.  The second script uses 'N' to pair each line-number line+  # with the numbered line, 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+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)+  sed '=' <$as_myself |+    sed '+      N+      s,$,-,+      : loop+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,+      t loop+      s,-$,,+      s,^['$as_cr_digits']*\n,,+    ' >$as_me.lineno &&+  chmod +x $as_me.lineno ||+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5+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 sensible to this).+  . ./$as_me.lineno+  # Exit status is that of the last command.+  exit+}+++case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in+  *c*,-n*) ECHO_N= ECHO_C='+' ECHO_T='	' ;;+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;+esac++if expr a : '\(a\)' >/dev/null 2>&1; then+  as_expr=expr+else+  as_expr=false+fi++rm -f conf$$ conf$$.exe conf$$.file+echo >conf$$.file+if ln -s conf$$.file conf$$ 2>/dev/null; then+  # We could just check for DJGPP; but this test a) works b) is more generic+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).+  if test -f conf$$.exe; then+    # Don't use ln at all; we don't have any links+    as_ln_s='cp -p'+  else+    as_ln_s='ln -s'+  fi+elif ln conf$$.file conf$$ 2>/dev/null; then+  as_ln_s=ln+else+  as_ln_s='cp -p'+fi+rm -f conf$$ conf$$.exe conf$$.file++if mkdir -p . 2>/dev/null; then+  as_mkdir_p=:+else+  as_mkdir_p=false+fi++as_executable_p="test -f"++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"+++# IFS+# We need space, tab and new line, in precisely that order.+as_nl='+'+IFS=" 	$as_nl"++# CDPATH.+$as_unset CDPATH++exec 6>&1++# Open the log real soon, to keep \$[0] and so on meaningful, and to+# report actual input values of CONFIG_FILES etc. instead of their+# values after options handling.  Logging --version etc. is OK.+exec 5>>config.log+{+  echo+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX+## Running $as_me. ##+_ASBOX+} >&5+cat >&5 <<_CSEOF++This file was extended by Haskell HOpenAL package $as_me 1.3, which was+generated by GNU Autoconf 2.57.  Invocation command line was++  CONFIG_FILES    = $CONFIG_FILES+  CONFIG_HEADERS  = $CONFIG_HEADERS+  CONFIG_LINKS    = $CONFIG_LINKS+  CONFIG_COMMANDS = $CONFIG_COMMANDS+  $ $0 $@++_CSEOF+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5+echo >&5+_ACEOF++# Files that config.status was made for.+if test -n "$ac_config_files"; then+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS+fi++if test -n "$ac_config_headers"; then+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS+fi++if test -n "$ac_config_links"; then+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS+fi++if test -n "$ac_config_commands"; then+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS+fi++cat >>$CONFIG_STATUS <<\_ACEOF++ac_cs_usage="\+\`$as_me' instantiates files from templates according to the+current configuration.++Usage: $0 [OPTIONS] [FILE]...++  -h, --help       print this help, then exit+  -V, --version    print version number, then exit+  -q, --quiet      do not print progress messages+  -d, --debug      don't remove temporary files+      --recheck    update $as_me by reconfiguring in the same conditions+  --file=FILE[:TEMPLATE]+                   instantiate the configuration file FILE+  --header=FILE[:TEMPLATE]+                   instantiate the configuration header FILE++Configuration files:+$config_files++Configuration headers:+$config_headers++Report bugs to <bug-autoconf@gnu.org>."+_ACEOF++cat >>$CONFIG_STATUS <<_ACEOF+ac_cs_version="\\+Haskell HOpenAL package config.status 1.3+configured by $0, generated by GNU Autoconf 2.57,+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"++Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001+Free Software Foundation, Inc.+This config.status script is free software; the Free Software Foundation+gives unlimited permission to copy, distribute and modify it."+srcdir=$srcdir+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF+# If no file are specified by the user, then we need to provide default+# value.  By we need to know if files were specified by the user.+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=$1+    ac_optarg=$2+    ac_shift=shift+    ;;+  *) # This is not an option, so the user has probably given explicit+     # arguments.+     ac_option=$1+     ac_need_defaults=false;;+  esac++  case $ac_option in+  # Handling of the options.+_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)+    ac_cs_recheck=: ;;+  --version | --vers* | -V )+    echo "$ac_cs_version"; exit 0 ;;+  --he | --h)+    # Conflict between --help and --header+    { { echo "$as_me:$LINENO: error: ambiguous option: $1+Try \`$0 --help' for more information." >&5+echo "$as_me: error: ambiguous option: $1+Try \`$0 --help' for more information." >&2;}+   { (exit 1); exit 1; }; };;+  --help | --hel | -h )+    echo "$ac_cs_usage"; exit 0 ;;+  --debug | --d* | -d )+    debug=: ;;+  --file | --fil | --fi | --f )+    $ac_shift+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"+    ac_need_defaults=false;;+  --header | --heade | --head | --hea )+    $ac_shift+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"+    ac_need_defaults=false;;+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \+  | -silent | --silent | --silen | --sile | --sil | --si | --s)+    ac_cs_silent=: ;;++  # This is an error.+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1+Try \`$0 --help' for more information." >&5+echo "$as_me: error: unrecognized option: $1+Try \`$0 --help' for more information." >&2;}+   { (exit 1); exit 1; }; } ;;++  *) ac_config_targets="$ac_config_targets $1" ;;++  esac+  shift+done++ac_configure_extra_args=++if $ac_cs_silent; then+  exec 6>/dev/null+  ac_configure_extra_args="$ac_configure_extra_args --silent"+fi++_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF+if \$ac_cs_recheck; then+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion+fi++_ACEOF++++++cat >>$CONFIG_STATUS <<\_ACEOF+for ac_config_target in $ac_config_targets+do+  case "$ac_config_target" in+  # Handling of arguments.+  "config.mk" ) CONFIG_FILES="$CONFIG_FILES config.mk" ;;+  "OpenAL.buildinfo" ) CONFIG_FILES="$CONFIG_FILES OpenAL.buildinfo" ;;+  "include/HsOpenALConfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/HsOpenALConfig.h" ;;+  "include/HsOpenAL.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/HsOpenAL.h" ;;+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}+   { (exit 1); exit 1; }; };;+  esac+done++# If the user did not use the arguments to specify the items to instantiate,+# then the envvar interface is used.  Set only those that are not.+# We use the long form for the default assignment because of an extremely+# bizarre bug on SunOS 4.1.3.+if $ac_need_defaults; then+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers+fi++# Have a temporary directory for convenience.  Make it in the build tree+# simply because there is no reason to put it here, and in addition,+# creating and moving files from /tmp can sometimes cause problems.+# Create a temporary directory, and hook for its removal unless debugging.+$debug ||+{+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0+  trap '{ (exit 1); exit 1; }' 1 2 13 15+}++# Create a (secure) tmp directory for tmp files.++{+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&+  test -n "$tmp" && test -d "$tmp"+}  ||+{+  tmp=./confstat$$-$RANDOM+  (umask 077 && mkdir $tmp)+} ||+{+   echo "$me: cannot create a temporary directory in ." >&2+   { (exit 1); exit 1; }+}++_ACEOF++cat >>$CONFIG_STATUS <<_ACEOF++#+# CONFIG_FILES section.+#++# No need to generate the scripts if there are no CONFIG_FILES.+# This happens for instance when ./config.status config.h+if test -n "\$CONFIG_FILES"; then+  # Protect against being on the right side of a sed subst in config.status.+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF+s,@SHELL@,$SHELL,;t t+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t+s,@exec_prefix@,$exec_prefix,;t t+s,@prefix@,$prefix,;t t+s,@program_transform_name@,$program_transform_name,;t t+s,@bindir@,$bindir,;t t+s,@sbindir@,$sbindir,;t t+s,@libexecdir@,$libexecdir,;t t+s,@datadir@,$datadir,;t t+s,@sysconfdir@,$sysconfdir,;t t+s,@sharedstatedir@,$sharedstatedir,;t t+s,@localstatedir@,$localstatedir,;t t+s,@libdir@,$libdir,;t t+s,@includedir@,$includedir,;t t+s,@oldincludedir@,$oldincludedir,;t t+s,@infodir@,$infodir,;t t+s,@mandir@,$mandir,;t t+s,@build_alias@,$build_alias,;t t+s,@host_alias@,$host_alias,;t t+s,@target_alias@,$target_alias,;t t+s,@DEFS@,$DEFS,;t t+s,@ECHO_C@,$ECHO_C,;t t+s,@ECHO_N@,$ECHO_N,;t t+s,@ECHO_T@,$ECHO_T,;t t+s,@LIBS@,$LIBS,;t t+s,@AL_BUILD_PACKAGE@,$AL_BUILD_PACKAGE,;t t+s,@CC@,$CC,;t t+s,@CFLAGS@,$CFLAGS,;t t+s,@LDFLAGS@,$LDFLAGS,;t t+s,@CPPFLAGS@,$CPPFLAGS,;t t+s,@ac_ct_CC@,$ac_ct_CC,;t t+s,@EXEEXT@,$EXEEXT,;t t+s,@OBJEXT@,$OBJEXT,;t t+s,@AL_LIBS@,$AL_LIBS,;t t+s,@AL_FRAMEWORKS@,$AL_FRAMEWORKS,;t t+s,@CPP@,$CPP,;t t+s,@EGREP@,$EGREP,;t t+s,@BUILD_PACKAGE_BOOL@,$BUILD_PACKAGE_BOOL,;t t+s,@CALLCONV@,$CALLCONV,;t t+s,@LIBOBJS@,$LIBOBJS,;t t+s,@LTLIBOBJS@,$LTLIBOBJS,;t t+CEOF++_ACEOF++  cat >>$CONFIG_STATUS <<\_ACEOF+  # Split the substitutions into bite-sized pieces for seds with+  # small command number limits, like on Digital OSF/1 and HP-UX.+  ac_max_sed_lines=48+  ac_sed_frag=1 # Number of current file.+  ac_beg=1 # First line for current file.+  ac_end=$ac_max_sed_lines # Line after last line for current file.+  ac_more_lines=:+  ac_sed_cmds=+  while $ac_more_lines; do+    if test $ac_beg -gt 1; then+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag+    else+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag+    fi+    if test ! -s $tmp/subs.frag; then+      ac_more_lines=false+    else+      # The purpose of the label and of the branching condition is to+      # speed up the sed processing (if there are no `@' at all, there+      # is no need to browse any of the substitutions).+      # These are the two extra sed commands mentioned above.+      (echo ':t+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed+      if test -z "$ac_sed_cmds"; then+  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"+      else+  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"+      fi+      ac_sed_frag=`expr $ac_sed_frag + 1`+      ac_beg=$ac_end+      ac_end=`expr $ac_end + $ac_max_sed_lines`+    fi+  done+  if test -z "$ac_sed_cmds"; then+    ac_sed_cmds=cat+  fi+fi # test -n "$CONFIG_FILES"++_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".+  case $ac_file in+  - | *:- | *:-:* ) # input from stdin+        cat >$tmp/stdin+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;+  * )   ac_file_in=$ac_file.in ;;+  esac++  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+         X"$ac_file" : 'X\(//\)[^/]' \| \+         X"$ac_file" : 'X\(//\)$' \| \+         X"$ac_file" : 'X\(/\)' \| \+         .     : '\(.\)' 2>/dev/null ||+echo X"$ac_file" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+  { if $as_mkdir_p; then+    mkdir -p "$ac_dir"+  else+    as_dir="$ac_dir"+    as_dirs=+    while test ! -d "$as_dir"; do+      as_dirs="$as_dir $as_dirs"+      as_dir=`(dirname "$as_dir") 2>/dev/null ||+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+         X"$as_dir" : 'X\(//\)[^/]' \| \+         X"$as_dir" : 'X\(//\)$' \| \+         X"$as_dir" : 'X\(/\)' \| \+         .     : '\(.\)' 2>/dev/null ||+echo X"$as_dir" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+    done+    test ! -n "$as_dirs" || mkdir $as_dirs+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}+   { (exit 1); exit 1; }; }; }++  ac_builddir=.++if test "$ac_dir" != .; then+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`+  # A "../" for each directory in $ac_dir_suffix.+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`+else+  ac_dir_suffix= ac_top_builddir=+fi++case $srcdir in+  .)  # No --srcdir option.  We are building in place.+    ac_srcdir=.+    if test -z "$ac_top_builddir"; then+       ac_top_srcdir=.+    else+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`+    fi ;;+  [\\/]* | ?:[\\/]* )  # Absolute path.+    ac_srcdir=$srcdir$ac_dir_suffix;+    ac_top_srcdir=$srcdir ;;+  *) # Relative path.+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix+    ac_top_srcdir=$ac_top_builddir$srcdir ;;+esac+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be+# absolute.+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`++++  if test x"$ac_file" != x-; then+    { echo "$as_me:$LINENO: creating $ac_file" >&5+echo "$as_me: creating $ac_file" >&6;}+    rm -f "$ac_file"+  fi+  # Let's still pretend it is `configure' which instantiates (i.e., don't+  # use $as_me), people would be surprised to read:+  #    /* config.h.  Generated by config.status.  */+  if test x"$ac_file" = x-; then+    configure_input=+  else+    configure_input="$ac_file.  "+  fi+  configure_input=$configure_input"Generated from `echo $ac_file_in |+                                     sed 's,.*/,,'` by configure."++  # First look for the input files in the build tree, otherwise in the+  # src tree.+  ac_file_inputs=`IFS=:+    for f in $ac_file_in; do+      case $f in+      -) echo $tmp/stdin ;;+      [\\/$]*)+         # Absolute (can't be DOS-style, as IFS=:)+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5+echo "$as_me: error: cannot find input file: $f" >&2;}+   { (exit 1); exit 1; }; }+         echo $f;;+      *) # Relative+         if test -f "$f"; then+           # Build tree+           echo $f+         elif test -f "$srcdir/$f"; then+           # Source tree+           echo $srcdir/$f+         else+           # /dev/null tree+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5+echo "$as_me: error: cannot find input file: $f" >&2;}+   { (exit 1); exit 1; }; }+         fi;;+      esac+    done` || { (exit 1); exit 1; }+_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF+  sed "$ac_vpsub+$extrasub+_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF+:t+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b+s,@configure_input@,$configure_input,;t t+s,@srcdir@,$ac_srcdir,;t t+s,@abs_srcdir@,$ac_abs_srcdir,;t t+s,@top_srcdir@,$ac_top_srcdir,;t t+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t+s,@builddir@,$ac_builddir,;t t+s,@abs_builddir@,$ac_abs_builddir,;t t+s,@top_builddir@,$ac_top_builddir,;t t+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out+  rm -f $tmp/stdin+  if test x"$ac_file" != x-; then+    mv $tmp/out $ac_file+  else+    cat $tmp/out+    rm -f $tmp/out+  fi++done+_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF++#+# CONFIG_HEADER section.+#++# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where+# NAME is the cpp macro being defined and VALUE is the value it is being given.+#+# ac_d sets the value in "#define NAME VALUE" lines.+ac_dA='s,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'+ac_dB='[ 	].*$,\1#\2'+ac_dC=' '+ac_dD=',;t'+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".+ac_uA='s,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'+ac_uB='$,\1#\2define\3'+ac_uC=' '+ac_uD=',;t'++for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".+  case $ac_file in+  - | *:- | *:-:* ) # input from stdin+        cat >$tmp/stdin+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;+  * )   ac_file_in=$ac_file.in ;;+  esac++  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5+echo "$as_me: creating $ac_file" >&6;}++  # First look for the input files in the build tree, otherwise in the+  # src tree.+  ac_file_inputs=`IFS=:+    for f in $ac_file_in; do+      case $f in+      -) echo $tmp/stdin ;;+      [\\/$]*)+         # Absolute (can't be DOS-style, as IFS=:)+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5+echo "$as_me: error: cannot find input file: $f" >&2;}+   { (exit 1); exit 1; }; }+         echo $f;;+      *) # Relative+         if test -f "$f"; then+           # Build tree+           echo $f+         elif test -f "$srcdir/$f"; then+           # Source tree+           echo $srcdir/$f+         else+           # /dev/null tree+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5+echo "$as_me: error: cannot find input file: $f" >&2;}+   { (exit 1); exit 1; }; }+         fi;;+      esac+    done` || { (exit 1); exit 1; }+  # Remove the trailing spaces.+  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in++_ACEOF++# Transform confdefs.h into two sed scripts, `conftest.defines' and+# `conftest.undefs', that substitutes the proper values into+# config.h.in to produce config.h.  The first handles `#define'+# templates, and the second `#undef' templates.+# And first: Protect against being on the right side of a sed subst in+# config.status.  Protect against being in an unquoted here document+# in config.status.+rm -f conftest.defines conftest.undefs+# Using a here document instead of a string reduces the quoting nightmare.+# Putting comments in sed scripts is not portable.+#+# `end' is used to avoid that the second main sed command (meant for+# 0-ary CPP macros) applies to n-ary macro definitions.+# See the Autoconf documentation for `clear'.+cat >confdef2sed.sed <<\_ACEOF+s/[\\&,]/\\&/g+s,[\\$`],\\&,g+t clear+: clear+s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	(][^ 	(]*\)\(([^)]*)\)[ 	]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp+t end+s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	][^ 	]*\)[ 	]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp+: end+_ACEOF+# If some macros were called several times there might be several times+# the same #defines, which is useless.  Nevertheless, we may not want to+# sort them, since we want the *last* AC-DEFINE to be honored.+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs+rm -f confdef2sed.sed++# This sed command replaces #undef with comments.  This is necessary, for+# example, in the case of _POSIX_SOURCE, which is predefined and required+# on some systems where configure will not decide to define it.+cat >>conftest.undefs <<\_ACEOF+s,^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,+_ACEOF++# Break up conftest.defines because some shells have a limit on the size+# of here documents, and old seds have small limits too (100 cmds).+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS+echo '  if grep "^[ 	]*#[ 	]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS+echo '  :' >>$CONFIG_STATUS+rm -f conftest.tail+while grep . conftest.defines >/dev/null+do+  # Write a limited-size here document to $tmp/defines.sed.+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS+  # Speed up: don't consider the non `#define' lines.+  echo '/^[ 	]*#[ 	]*define/!b' >>$CONFIG_STATUS+  # Work around the forget-to-reset-the-flag bug.+  echo 't clr' >>$CONFIG_STATUS+  echo ': clr' >>$CONFIG_STATUS+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS+  echo 'CEOF+  sed -f $tmp/defines.sed $tmp/in >$tmp/out+  rm -f $tmp/in+  mv $tmp/out $tmp/in+' >>$CONFIG_STATUS+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail+  rm -f conftest.defines+  mv conftest.tail conftest.defines+done+rm -f conftest.defines+echo '  fi # grep' >>$CONFIG_STATUS+echo >>$CONFIG_STATUS++# Break up conftest.undefs because some shells have a limit on the size+# of here documents, and old seds have small limits too (100 cmds).+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS+rm -f conftest.tail+while grep . conftest.undefs >/dev/null+do+  # Write a limited-size here document to $tmp/undefs.sed.+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS+  # Speed up: don't consider the non `#undef'+  echo '/^[ 	]*#[ 	]*undef/!b' >>$CONFIG_STATUS+  # Work around the forget-to-reset-the-flag bug.+  echo 't clr' >>$CONFIG_STATUS+  echo ': clr' >>$CONFIG_STATUS+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS+  echo 'CEOF+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out+  rm -f $tmp/in+  mv $tmp/out $tmp/in+' >>$CONFIG_STATUS+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail+  rm -f conftest.undefs+  mv conftest.tail conftest.undefs+done+rm -f conftest.undefs++cat >>$CONFIG_STATUS <<\_ACEOF+  # Let's still pretend it is `configure' which instantiates (i.e., don't+  # use $as_me), people would be surprised to read:+  #    /* config.h.  Generated by config.status.  */+  if test x"$ac_file" = x-; then+    echo "/* Generated by configure.  */" >$tmp/config.h+  else+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h+  fi+  cat $tmp/in >>$tmp/config.h+  rm -f $tmp/in+  if test x"$ac_file" != x-; then+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5+echo "$as_me: $ac_file is unchanged" >&6;}+    else+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+         X"$ac_file" : 'X\(//\)[^/]' \| \+         X"$ac_file" : 'X\(//\)$' \| \+         X"$ac_file" : 'X\(/\)' \| \+         .     : '\(.\)' 2>/dev/null ||+echo X"$ac_file" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+      { if $as_mkdir_p; then+    mkdir -p "$ac_dir"+  else+    as_dir="$ac_dir"+    as_dirs=+    while test ! -d "$as_dir"; do+      as_dirs="$as_dir $as_dirs"+      as_dir=`(dirname "$as_dir") 2>/dev/null ||+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+         X"$as_dir" : 'X\(//\)[^/]' \| \+         X"$as_dir" : 'X\(//\)$' \| \+         X"$as_dir" : 'X\(/\)' \| \+         .     : '\(.\)' 2>/dev/null ||+echo X"$as_dir" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }+  	  /^X\(\/\/\)$/{ s//\1/; q; }+  	  /^X\(\/\).*/{ s//\1/; q; }+  	  s/.*/./; q'`+    done+    test ! -n "$as_dirs" || mkdir $as_dirs+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}+   { (exit 1); exit 1; }; }; }++      rm -f $ac_file+      mv $tmp/config.h $ac_file+    fi+  else+    cat $tmp/config.h+    rm -f $tmp/config.h+  fi+done+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF++{ (exit 0); exit 0; }+_ACEOF+chmod +x $CONFIG_STATUS+ac_clean_files=$ac_clean_files_save+++# configure is writing to config.log, and then calls config.status.+# config.status does its own redirection, appending to config.log.+# Unfortunately, on DOS this fails, as config.log is still kept open+# by configure, so config.status won't be able to write to it; its+# output is simply discarded.  So we exec the FD to /dev/null,+# effectively closing config.log, so it can be properly (re)opened and+# appended to by config.status.  When coming back to configure, we+# need to make the FD available again.+if test "$no_create" != yes; then+  ac_cs_success=:+  ac_config_status_args=+  test "$silent" = yes &&+    ac_config_status_args="$ac_config_status_args --quiet"+  exec 5>/dev/null+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false+  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; }+fi+
+ configure.ac view
@@ -0,0 +1,201 @@+AC_INIT([Haskell HOpenAL package], [1.3], [sven.panne@aedion.de], [OpenAL])++# Safety check: Ensure that we are in the correct source directory.+AC_CONFIG_SRCDIR([include/HsOpenAL.h.in])++# The first file mentioned below will be generated by autoheader and contains+# defines which are needed during package build time only. The second header+# contains all kinds of stuff which is needed for using this package.+AC_CONFIG_HEADERS([include/HsOpenALConfig.h include/HsOpenAL.h])++# Shall we build this package at all?+FP_ARG_OPENAL+# We set this to "yes" later when we have found OpenAL libs and headers.+AL_BUILD_PACKAGE=no+if test x"$enable_openal" = xyes; then++AC_SUBST([AL_BUILD_PACKAGE])++# The following test for the OpenAL library is a bit of a hack, but gives nice+# feedback even for the case when no additional library is needed. (Mac OS X?)+AL_LIBS=no+AC_SEARCH_LIBS([alGenSources], [openal openal32], [AL_LIBS="$ac_cv_search_alGenSources"])+test x"$AL_LIBS" = x"none required" && AL_LIBS=+AC_SUBST([AL_LIBS])++if test "$AL_LIBS" = no; then+  AC_MSG_WARN([no OpenAL library found, so this package will not be built])+else++# Ugly...+AL_FRAMEWORKS=+case $host_os in+darwin*)+  AL_FRAMEWORKS=OpenAL+  ;;+esac+AC_SUBST([AL_FRAMEWORKS])++FP_HEADER_AL+FP_HEADER_ALC+if test -z "$AL_FRAMEWORKS" && test x"$fp_found_al_header$fp_found_alc_header" != xyesyes; then+  AC_MSG_WARN([no OpenAL headers found, so this package will not be built])+else++AL_BUILD_PACKAGE=yes++AC_CHECK_HEADERS([AL/alext.h OpenAL/alext.h], [break])++FP_FUNC_ALCCLOSEDEVICE_VOID+FP_FUNC_ALCMAKECONTEXTCURRENT_VOID+FP_FUNC_ALCPROCESSCONTEXT_VOID+FP_FUNC_ALCDESTROYCONTEXT_VOID++FPTOOLS_CHECK_HTYPE([ALboolean])+FPTOOLS_CHECK_HTYPE([ALchar], [Int8])+FPTOOLS_CHECK_HTYPE([ALbyte])+FPTOOLS_CHECK_HTYPE([ALubyte])+FPTOOLS_CHECK_HTYPE([ALshort])+FPTOOLS_CHECK_HTYPE([ALushort])+FPTOOLS_CHECK_HTYPE([ALint])+FPTOOLS_CHECK_HTYPE([ALuint])+FPTOOLS_CHECK_HTYPE([ALsizei])+FPTOOLS_CHECK_HTYPE([ALenum])+FPTOOLS_CHECK_HTYPE([ALfloat])+FPTOOLS_CHECK_HTYPE([ALdouble])++FPTOOLS_CHECK_HTYPE([ALCboolean], [Int8])+FPTOOLS_CHECK_HTYPE([ALCchar], [Int8])+FPTOOLS_CHECK_HTYPE([ALCbyte], [Int8])+FPTOOLS_CHECK_HTYPE([ALCubyte], [Word8])+FPTOOLS_CHECK_HTYPE([ALCshort], [Int16])+FPTOOLS_CHECK_HTYPE([ALCushort], [Word16])+FPTOOLS_CHECK_HTYPE([ALCint], [Int32])+FPTOOLS_CHECK_HTYPE([ALCuint], [Word32])+FPTOOLS_CHECK_HTYPE([ALCsizei], [Int32])+FPTOOLS_CHECK_HTYPE([ALCenum], [Int32])+FPTOOLS_CHECK_HTYPE([ALCfloat], [Float])+FPTOOLS_CHECK_HTYPE([ALCdouble], [Double])++FP_CHECK_CONSTS([AL_FALSE AL_TRUE AL_NO_ERROR AL_INVALID_NAME AL_INVALID_ENUM AL_INVALID_VALUE AL_INVALID_OPERATION AL_OUT_OF_MEMORY AL_DOPPLER_FACTOR AL_SPEED_OF_SOUND AL_DISTANCE_MODEL AL_VERSION AL_RENDERER AL_VENDOR AL_EXTENSIONS AL_NONE AL_INVERSE_DISTANCE AL_INVERSE_DISTANCE_CLAMPED AL_LINEAR_DISTANCE AL_LINEAR_DISTANCE_CLAMPED AL_EXPONENT_DISTANCE AL_EXPONENT_DISTANCE_CLAMPED AL_POSITION AL_VELOCITY AL_GAIN AL_ORIENTATION AL_SOURCE_RELATIVE AL_SOURCE_TYPE AL_LOOPING AL_BUFFER AL_BUFFERS_QUEUED AL_BUFFERS_PROCESSED AL_MIN_GAIN AL_MAX_GAIN AL_REFERENCE_DISTANCE AL_ROLLOFF_FACTOR AL_MAX_DISTANCE AL_PITCH AL_DIRECTION AL_CONE_INNER_ANGLE AL_CONE_OUTER_ANGLE AL_CONE_OUTER_GAIN AL_SEC_OFFSET AL_SAMPLE_OFFSET AL_BYTE_OFFSET AL_SOURCE_STATE AL_UNDETERMINED AL_STATIC AL_STREAMING AL_INITIAL AL_PLAYING AL_PAUSED AL_STOPPED AL_FREQUENCY AL_SIZE AL_BITS AL_CHANNELS AL_FORMAT_MONO8 AL_FORMAT_MONO16 AL_FORMAT_STEREO8 AL_FORMAT_STEREO16 ALC_FALSE ALC_TRUE ALC_FREQUENCY ALC_REFRESH ALC_SYNC ALC_MONO_SOURCES ALC_STEREO_SOURCES ALC_NO_ERROR ALC_INVALID_DEVICE ALC_INVALID_CONTEXT ALC_INVALID_ENUM ALC_INVALID_VALUE ALC_INVALID_OPERATION ALC_OUT_OF_MEMORY ALC_DEFAULT_DEVICE_SPECIFIER ALC_DEVICE_SPECIFIER ALC_EXTENSIONS ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER ALC_CAPTURE_DEVICE_SPECIFIER ALC_ATTRIBUTES_SIZE ALC_ALL_ATTRIBUTES ALC_MAJOR_VERSION ALC_MINOR_VERSION ALC_CAPTURE_SAMPLES], [#include <stdio.h>+#if defined(HAVE_AL_ALC_H)+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/alc.h>+#endif++#if defined(HAVE_AL_ALEXT_H)+#include <AL/alext.h>+#elif defined(HAVE_OPENAL_ALEXT_H)+#include <OpenAL/alext.h>+#endif++#ifndef AL_SPEED_OF_SOUND+#define AL_SPEED_OF_SOUND 0xC003+#endif++#ifndef AL_LINEAR_DISTANCE+#define AL_LINEAR_DISTANCE 0xD003+#endif++#ifndef AL_LINEAR_DISTANCE_CLAMPED+#define AL_LINEAR_DISTANCE_CLAMPED 0xD004+#endif++#ifndef AL_EXPONENT_DISTANCE+#define AL_EXPONENT_DISTANCE 0xD005+#endif++#ifndef AL_EXPONENT_DISTANCE_CLAMPED+#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006+#endif++#ifndef AL_SEC_OFFSET+#define AL_SEC_OFFSET 0x1024+#endif++#ifndef AL_SAMPLE_OFFSET+#define AL_SAMPLE_OFFSET 0x1025+#endif++#ifndef AL_BYTE_OFFSET+#define AL_BYTE_OFFSET 0x1026+#endif++#ifndef AL_UNDETERMINED+#define AL_UNDETERMINED 0x1030+#endif++#ifndef AL_STATIC+#define AL_STATIC 0x1028+#endif++#ifndef ALC_MONO_SOURCES+#define ALC_MONO_SOURCES 0x1010+#endif++#ifndef ALC_STEREO_SOURCES+#define ALC_STEREO_SOURCES 0x1011+#endif++#ifndef AL_INVALID_ENUM+#ifdef AL_ILLEGAL_ENUM+#define AL_INVALID_ENUM AL_ILLEGAL_ENUM+#else+#define AL_INVALID_ENUM 0xA002+#endif+#endif++#ifndef AL_INVALID_OPERATION+#ifdef AL_ILLEGAL_COMMAND+#define AL_INVALID_OPERATION AL_ILLEGAL_COMMAND+#else+#define AL_INVALID_OPERATION 0xA004+#endif+#endif++/* NOTE: THIS IS NOT IN ANY HEADER */+#ifndef ALC_INVALID_OPERATION+#define ALC_INVALID_OPERATION 0xA006+#endif++#ifndef ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311+#endif++#ifndef ALC_CAPTURE_DEVICE_SPECIFIER+#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310+#endif++#ifndef ALC_CAPTURE_SAMPLES+#define ALC_CAPTURE_SAMPLES 0x312+#endif+])++AC_DEFINE_UNQUOTED([AL_LIBS],+  [`echo '' $AL_LIBS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`],+  [Library flags for AL, as a list of string literals.])++AC_DEFINE_UNQUOTED([AL_FRAMEWORKS],+  [`echo '' $AL_FRAMEWORKS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`],+  [Framework flags for AL, as a list of string literals.])++fi+fi+fi++if test "$AL_BUILD_PACKAGE" = yes; then+  BUILD_PACKAGE_BOOL=True+else+  BUILD_PACKAGE_BOOL=False+fi+AC_SUBST([BUILD_PACKAGE_BOOL])++case "$host" in+*-mingw32) CALLCONV=stdcall ;;+*)      CALLCONV=ccall ;;+esac+AC_SUBST([CALLCONV])++AC_CONFIG_FILES([config.mk OpenAL.buildinfo])+AC_OUTPUT
+ include/HsOpenAL.h.in view
@@ -0,0 +1,30 @@+/* -----------------------------------------------------------------------------+ *+ * Module      :  C support for Sound.OpenAL+ * Copyright   :  (c) Sven Panne 2003-2005+ * License     :  BSD-style (see the file libraries/OpenAL/LICENSE)+ * + * Maintainer  :  sven.panne@aedion.de+ * Stability   :  provisional+ * Portability :  portable+ *+ * -------------------------------------------------------------------------- */++#ifndef HSOPENAL_H+#define HSOPENAL_H++/* Define to 1 if you have the <AL/alc.h> header file. */+#undef HAVE_AL_ALC_H++/* Define to 1 if you have the <OpenAL/alc.h> header file. */+#undef HAVE_OPENAL_ALC_H++#if defined(HAVE_AL_ALC_H)+#include <AL/al.h>+#include <AL/alc.h>+#elif defined(HAVE_OPENAL_ALC_H)+#include <OpenAL/al.h>+#include <OpenAL/alc.h>+#endif++#endif
+ include/HsOpenALConfig.h.in view
@@ -0,0 +1,409 @@+/* include/HsOpenALConfig.h.in.  Generated from configure.ac by autoheader.  */++/* Define to 1 if `alcCloseDevice' returns void. */+#undef ALCCLOSEDEVICE_VOID++/* Define to 1 if `alcDestroyContext' returns void. */+#undef ALCDESTROYCONTEXT_VOID++/* Define to 1 if `alcMakeContextCurrent' returns void. */+#undef ALCMAKECONTEXTCURRENT_VOID++/* Define to 1 if `alcProcessContext' returns void. */+#undef ALCPROCESSCONTEXT_VOID++/* Framework flags for AL, as a list of string literals. */+#undef AL_FRAMEWORKS++/* Library flags for AL, as a list of string literals. */+#undef AL_LIBS++/* The value of ALC_ALL_ATTRIBUTES. */+#undef CONST_ALC_ALL_ATTRIBUTES++/* The value of ALC_ATTRIBUTES_SIZE. */+#undef CONST_ALC_ATTRIBUTES_SIZE++/* The value of ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER. */+#undef CONST_ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER++/* The value of ALC_CAPTURE_DEVICE_SPECIFIER. */+#undef CONST_ALC_CAPTURE_DEVICE_SPECIFIER++/* The value of ALC_CAPTURE_SAMPLES. */+#undef CONST_ALC_CAPTURE_SAMPLES++/* The value of ALC_DEFAULT_DEVICE_SPECIFIER. */+#undef CONST_ALC_DEFAULT_DEVICE_SPECIFIER++/* The value of ALC_DEVICE_SPECIFIER. */+#undef CONST_ALC_DEVICE_SPECIFIER++/* The value of ALC_EXTENSIONS. */+#undef CONST_ALC_EXTENSIONS++/* The value of ALC_FALSE. */+#undef CONST_ALC_FALSE++/* The value of ALC_FREQUENCY. */+#undef CONST_ALC_FREQUENCY++/* The value of ALC_INVALID_CONTEXT. */+#undef CONST_ALC_INVALID_CONTEXT++/* The value of ALC_INVALID_DEVICE. */+#undef CONST_ALC_INVALID_DEVICE++/* The value of ALC_INVALID_ENUM. */+#undef CONST_ALC_INVALID_ENUM++/* The value of ALC_INVALID_OPERATION. */+#undef CONST_ALC_INVALID_OPERATION++/* The value of ALC_INVALID_VALUE. */+#undef CONST_ALC_INVALID_VALUE++/* The value of ALC_MAJOR_VERSION. */+#undef CONST_ALC_MAJOR_VERSION++/* The value of ALC_MINOR_VERSION. */+#undef CONST_ALC_MINOR_VERSION++/* The value of ALC_MONO_SOURCES. */+#undef CONST_ALC_MONO_SOURCES++/* The value of ALC_NO_ERROR. */+#undef CONST_ALC_NO_ERROR++/* The value of ALC_OUT_OF_MEMORY. */+#undef CONST_ALC_OUT_OF_MEMORY++/* The value of ALC_REFRESH. */+#undef CONST_ALC_REFRESH++/* The value of ALC_STEREO_SOURCES. */+#undef CONST_ALC_STEREO_SOURCES++/* The value of ALC_SYNC. */+#undef CONST_ALC_SYNC++/* The value of ALC_TRUE. */+#undef CONST_ALC_TRUE++/* The value of AL_BITS. */+#undef CONST_AL_BITS++/* The value of AL_BUFFER. */+#undef CONST_AL_BUFFER++/* The value of AL_BUFFERS_PROCESSED. */+#undef CONST_AL_BUFFERS_PROCESSED++/* The value of AL_BUFFERS_QUEUED. */+#undef CONST_AL_BUFFERS_QUEUED++/* The value of AL_BYTE_OFFSET. */+#undef CONST_AL_BYTE_OFFSET++/* The value of AL_CHANNELS. */+#undef CONST_AL_CHANNELS++/* The value of AL_CONE_INNER_ANGLE. */+#undef CONST_AL_CONE_INNER_ANGLE++/* The value of AL_CONE_OUTER_ANGLE. */+#undef CONST_AL_CONE_OUTER_ANGLE++/* The value of AL_CONE_OUTER_GAIN. */+#undef CONST_AL_CONE_OUTER_GAIN++/* The value of AL_DIRECTION. */+#undef CONST_AL_DIRECTION++/* The value of AL_DISTANCE_MODEL. */+#undef CONST_AL_DISTANCE_MODEL++/* The value of AL_DOPPLER_FACTOR. */+#undef CONST_AL_DOPPLER_FACTOR++/* The value of AL_EXPONENT_DISTANCE. */+#undef CONST_AL_EXPONENT_DISTANCE++/* The value of AL_EXPONENT_DISTANCE_CLAMPED. */+#undef CONST_AL_EXPONENT_DISTANCE_CLAMPED++/* The value of AL_EXTENSIONS. */+#undef CONST_AL_EXTENSIONS++/* The value of AL_FALSE. */+#undef CONST_AL_FALSE++/* The value of AL_FORMAT_MONO16. */+#undef CONST_AL_FORMAT_MONO16++/* The value of AL_FORMAT_MONO8. */+#undef CONST_AL_FORMAT_MONO8++/* The value of AL_FORMAT_STEREO16. */+#undef CONST_AL_FORMAT_STEREO16++/* The value of AL_FORMAT_STEREO8. */+#undef CONST_AL_FORMAT_STEREO8++/* The value of AL_FREQUENCY. */+#undef CONST_AL_FREQUENCY++/* The value of AL_GAIN. */+#undef CONST_AL_GAIN++/* The value of AL_INITIAL. */+#undef CONST_AL_INITIAL++/* The value of AL_INVALID_ENUM. */+#undef CONST_AL_INVALID_ENUM++/* The value of AL_INVALID_NAME. */+#undef CONST_AL_INVALID_NAME++/* The value of AL_INVALID_OPERATION. */+#undef CONST_AL_INVALID_OPERATION++/* The value of AL_INVALID_VALUE. */+#undef CONST_AL_INVALID_VALUE++/* The value of AL_INVERSE_DISTANCE. */+#undef CONST_AL_INVERSE_DISTANCE++/* The value of AL_INVERSE_DISTANCE_CLAMPED. */+#undef CONST_AL_INVERSE_DISTANCE_CLAMPED++/* The value of AL_LINEAR_DISTANCE. */+#undef CONST_AL_LINEAR_DISTANCE++/* The value of AL_LINEAR_DISTANCE_CLAMPED. */+#undef CONST_AL_LINEAR_DISTANCE_CLAMPED++/* The value of AL_LOOPING. */+#undef CONST_AL_LOOPING++/* The value of AL_MAX_DISTANCE. */+#undef CONST_AL_MAX_DISTANCE++/* The value of AL_MAX_GAIN. */+#undef CONST_AL_MAX_GAIN++/* The value of AL_MIN_GAIN. */+#undef CONST_AL_MIN_GAIN++/* The value of AL_NONE. */+#undef CONST_AL_NONE++/* The value of AL_NO_ERROR. */+#undef CONST_AL_NO_ERROR++/* The value of AL_ORIENTATION. */+#undef CONST_AL_ORIENTATION++/* The value of AL_OUT_OF_MEMORY. */+#undef CONST_AL_OUT_OF_MEMORY++/* The value of AL_PAUSED. */+#undef CONST_AL_PAUSED++/* The value of AL_PITCH. */+#undef CONST_AL_PITCH++/* The value of AL_PLAYING. */+#undef CONST_AL_PLAYING++/* The value of AL_POSITION. */+#undef CONST_AL_POSITION++/* The value of AL_REFERENCE_DISTANCE. */+#undef CONST_AL_REFERENCE_DISTANCE++/* The value of AL_RENDERER. */+#undef CONST_AL_RENDERER++/* The value of AL_ROLLOFF_FACTOR. */+#undef CONST_AL_ROLLOFF_FACTOR++/* The value of AL_SAMPLE_OFFSET. */+#undef CONST_AL_SAMPLE_OFFSET++/* The value of AL_SEC_OFFSET. */+#undef CONST_AL_SEC_OFFSET++/* The value of AL_SIZE. */+#undef CONST_AL_SIZE++/* The value of AL_SOURCE_RELATIVE. */+#undef CONST_AL_SOURCE_RELATIVE++/* The value of AL_SOURCE_STATE. */+#undef CONST_AL_SOURCE_STATE++/* The value of AL_SOURCE_TYPE. */+#undef CONST_AL_SOURCE_TYPE++/* The value of AL_SPEED_OF_SOUND. */+#undef CONST_AL_SPEED_OF_SOUND++/* The value of AL_STATIC. */+#undef CONST_AL_STATIC++/* The value of AL_STOPPED. */+#undef CONST_AL_STOPPED++/* The value of AL_STREAMING. */+#undef CONST_AL_STREAMING++/* The value of AL_TRUE. */+#undef CONST_AL_TRUE++/* The value of AL_UNDETERMINED. */+#undef CONST_AL_UNDETERMINED++/* The value of AL_VELOCITY. */+#undef CONST_AL_VELOCITY++/* The value of AL_VENDOR. */+#undef CONST_AL_VENDOR++/* The value of AL_VERSION. */+#undef CONST_AL_VERSION++/* Define to 1 if you have the <AL/alc.h> header file. */+#undef HAVE_AL_ALC_H++/* Define to 1 if you have the <AL/alext.h> header file. */+#undef HAVE_AL_ALEXT_H++/* Define to 1 if you have the <AL/al.h> header file. */+#undef HAVE_AL_AL_H++/* Define to 1 if you have the <inttypes.h> header file. */+#undef HAVE_INTTYPES_H++/* Define to 1 if you have the <memory.h> header file. */+#undef HAVE_MEMORY_H++/* Define to 1 if you have the <OpenAL/alc.h> header file. */+#undef HAVE_OPENAL_ALC_H++/* Define to 1 if you have the <OpenAL/alext.h> header file. */+#undef HAVE_OPENAL_ALEXT_H++/* Define to 1 if you have the <OpenAL/al.h> header file. */+#undef HAVE_OPENAL_AL_H++/* Define to 1 if you have the <stdint.h> header file. */+#undef HAVE_STDINT_H++/* Define to 1 if you have the <stdlib.h> header file. */+#undef HAVE_STDLIB_H++/* Define to 1 if you have the <strings.h> header file. */+#undef HAVE_STRINGS_H++/* Define to 1 if you have the <string.h> header file. */+#undef HAVE_STRING_H++/* Define to 1 if you have the <sys/stat.h> header file. */+#undef HAVE_SYS_STAT_H++/* Define to 1 if you have the <sys/types.h> header file. */+#undef HAVE_SYS_TYPES_H++/* Define to 1 if you have the <unistd.h> header file. */+#undef HAVE_UNISTD_H++/* Define to Haskell type for ALboolean */+#undef HTYPE_ALBOOLEAN++/* Define to Haskell type for ALbyte */+#undef HTYPE_ALBYTE++/* Define to Haskell type for ALCboolean */+#undef HTYPE_ALCBOOLEAN++/* Define to Haskell type for ALCbyte */+#undef HTYPE_ALCBYTE++/* Define to Haskell type for ALCchar */+#undef HTYPE_ALCCHAR++/* Define to Haskell type for ALCdouble */+#undef HTYPE_ALCDOUBLE++/* Define to Haskell type for ALCenum */+#undef HTYPE_ALCENUM++/* Define to Haskell type for ALCfloat */+#undef HTYPE_ALCFLOAT++/* Define to Haskell type for ALchar */+#undef HTYPE_ALCHAR++/* Define to Haskell type for ALCint */+#undef HTYPE_ALCINT++/* Define to Haskell type for ALCshort */+#undef HTYPE_ALCSHORT++/* Define to Haskell type for ALCsizei */+#undef HTYPE_ALCSIZEI++/* Define to Haskell type for ALCubyte */+#undef HTYPE_ALCUBYTE++/* Define to Haskell type for ALCuint */+#undef HTYPE_ALCUINT++/* Define to Haskell type for ALCushort */+#undef HTYPE_ALCUSHORT++/* Define to Haskell type for ALdouble */+#undef HTYPE_ALDOUBLE++/* Define to Haskell type for ALenum */+#undef HTYPE_ALENUM++/* Define to Haskell type for ALfloat */+#undef HTYPE_ALFLOAT++/* Define to Haskell type for ALint */+#undef HTYPE_ALINT++/* Define to Haskell type for ALshort */+#undef HTYPE_ALSHORT++/* Define to Haskell type for ALsizei */+#undef HTYPE_ALSIZEI++/* Define to Haskell type for ALubyte */+#undef HTYPE_ALUBYTE++/* Define to Haskell type for ALuint */+#undef HTYPE_ALUINT++/* Define to Haskell type for ALushort */+#undef HTYPE_ALUSHORT++/* Define to the address where bug reports for this package should be sent. */+#undef PACKAGE_BUGREPORT++/* Define to the full name of this package. */+#undef PACKAGE_NAME++/* Define to the full name and version of this package. */+#undef PACKAGE_STRING++/* Define to the one symbol short name of this package. */+#undef PACKAGE_TARNAME++/* Define to the version of this package. */+#undef PACKAGE_VERSION++/* Define to 1 if you have the ANSI C header files. */+#undef STDC_HEADERS
+ install-sh view
@@ -0,0 +1,295 @@+#!/bin/sh+# install - install a program, script, or datafile++scriptversion=2003-09-24.23++# This originates from X11R5 (mit/util/scripts/install.sh), which was+# later released in X11R6 (xc/config/util/install.sh) with the+# following copyright and license.+#+# Copyright (C) 1994 X Consortium+#+# Permission is hereby granted, free of charge, to any person obtaining a copy+# of this software and associated documentation files (the "Software"), to+# deal in the Software without restriction, including without limitation the+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or+# sell copies of the Software, and to permit persons to whom the Software is+# furnished to do so, subject to the following conditions:+#+# The above copyright notice and this permission notice shall be included in+# all copies or substantial portions of the Software.+#+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.+#+# Except as contained in this notice, the name of the X Consortium shall not+# be used in advertising or otherwise to promote the sale, use or other deal-+# ings in this Software without prior written authorization from the X Consor-+# tium.+#+#+# FSF changes to this file are in the public domain.+#+# Calling this script install-sh is preferred over install.sh, to prevent+# `make' implicit rules from creating a file called install from it+# when there is no Makefile.+#+# This script is compatible with the BSD install script, but was written+# from scratch.  It can only install one file at a time, a restriction+# shared with many OS's install programs.++# set DOITPROG to echo to test this script++# Don't use :- since 4.3BSD and earlier shells don't like it.+doit="${DOITPROG-}"++# put in absolute paths if you don't have them in your path; or use env. vars.++mvprog="${MVPROG-mv}"+cpprog="${CPPROG-cp}"+chmodprog="${CHMODPROG-chmod}"+chownprog="${CHOWNPROG-chown}"+chgrpprog="${CHGRPPROG-chgrp}"+stripprog="${STRIPPROG-strip}"+rmprog="${RMPROG-rm}"+mkdirprog="${MKDIRPROG-mkdir}"++transformbasename=+transform_arg=+instcmd="$mvprog"+chmodcmd="$chmodprog 0755"+chowncmd=+chgrpcmd=+stripcmd=+rmcmd="$rmprog -f"+mvcmd="$mvprog"+src=+dst=+dir_arg=++usage="Usage: $0 [OPTION]... SRCFILE DSTFILE+   or: $0 -d DIR1 DIR2...++In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.+In the second, create the directory path DIR.++Options:+-b=TRANSFORMBASENAME+-c         copy source (using $cpprog) instead of moving (using $mvprog).+-d         create directories instead of installing files.+-g GROUP   $chgrp installed files to GROUP.+-m MODE    $chmod installed files to MODE.+-o USER    $chown installed files to USER.+-s         strip installed files (using $stripprog).+-t=TRANSFORM+--help     display this help and exit.+--version  display version info and exit.++Environment variables override the default commands:+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG+"++while test -n "$1"; do+  case $1 in+    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`+        shift+        continue;;++    -c) instcmd=$cpprog+        shift+        continue;;++    -d) dir_arg=true+        shift+        continue;;++    -g) chgrpcmd="$chgrpprog $2"+        shift+        shift+        continue;;++    --help) echo "$usage"; exit 0;;++    -m) chmodcmd="$chmodprog $2"+        shift+        shift+        continue;;++    -o) chowncmd="$chownprog $2"+        shift+        shift+        continue;;++    -s) stripcmd=$stripprog+        shift+        continue;;++    -t=*) transformarg=`echo $1 | sed 's/-t=//'`+        shift+        continue;;++    --version) echo "$0 $scriptversion"; exit 0;;++    *)  if test -z "$src"; then+          src=$1+        else+          # this colon is to work around a 386BSD /bin/sh bug+          :+          dst=$1+        fi+        shift+        continue;;+  esac+done++if test -z "$src"; then+  echo "$0: no input file specified." >&2+  exit 1+fi++# Protect names starting with `-'.+case $src in+  -*) src=./$src ;;+esac++if test -n "$dir_arg"; then+  dst=$src+  src=++  if test -d "$dst"; then+    instcmd=:+    chmodcmd=+  else+    instcmd=$mkdirprog+  fi+else+  # Waiting for this to be detected by the "$instcmd $src $dsttmp" command+  # might cause directories to be created, which would be especially bad+  # if $src (and thus $dsttmp) contains '*'.+  if test ! -f "$src" && test ! -d "$src"; then+    echo "$0: $src does not exist." >&2+    exit 1+  fi++  if test -z "$dst"; then+    echo "$0: no destination specified." >&2+    exit 1+  fi++  # Protect names starting with `-'.+  case $dst in+    -*) dst=./$dst ;;+  esac++  # If destination is a directory, append the input filename; won't work+  # if double slashes aren't ignored.+  if test -d "$dst"; then+    dst=$dst/`basename "$src"`+  fi+fi++# This sed command emulates the dirname command.+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`++# Make sure that the destination directory exists.++# Skip lots of stat calls in the usual case.+if test ! -d "$dstdir"; then+  defaultIFS='+	'+  IFS="${IFS-$defaultIFS}"++  oIFS=$IFS+  # Some sh's can't handle IFS=/ for some reason.+  IFS='%'+  set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`+  IFS=$oIFS++  pathcomp=++  while test $# -ne 0 ; do+    pathcomp=$pathcomp$1+    shift+    test -d "$pathcomp" || $mkdirprog "$pathcomp"+    pathcomp=$pathcomp/+  done+fi++if test -n "$dir_arg"; then+  $doit $instcmd "$dst" \+    && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \+    && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \+    && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \+    && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }++else+  # If we're going to rename the final executable, determine the name now.+  if test -z "$transformarg"; then+    dstfile=`basename "$dst"`+  else+    dstfile=`basename "$dst" $transformbasename \+             | sed $transformarg`$transformbasename+  fi++  # don't allow the sed command to completely eliminate the filename.+  test -z "$dstfile" && dstfile=`basename "$dst"`++  # Make a couple of temp file names in the proper directory.+  dsttmp=$dstdir/_inst.$$_+  rmtmp=$dstdir/_rm.$$_++  # Trap to clean up those temp files at exit.+  trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0+  trap '(exit $?); exit' 1 2 13 15++  # Move or copy the file name to the temp name+  $doit $instcmd "$src" "$dsttmp" &&++  # and set any options; do chmod last to preserve setuid bits.+  #+  # If any of these fail, we abort the whole thing.  If we want to+  # ignore errors from any of these, just make sure not to ignore+  # errors from the above "$doit $instcmd $src $dsttmp" command.+  #+  { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \+    && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \+    && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \+    && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&++  # Now remove or move aside any old file at destination location.  We+  # try this two ways since rm can't unlink itself on some systems and+  # the destination file might be busy for other reasons.  In this case,+  # the final cleanup might fail but the new file should still install+  # successfully.+  {+    if test -f "$dstdir/$dstfile"; then+      $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \+      || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \+      || {+	  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2+	  (exit 1); exit+      }+    else+      :+    fi+  } &&++  # Now rename the file to the real destination.+  $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"+fi &&++# The final little trick to "correctly" pass the exit status to the exit trap.+{+  (exit 0); exit+}++# Local variables:+# eval: (add-hook 'write-file-hooks 'time-stamp)+# time-stamp-start: "scriptversion="+# time-stamp-format: "%:y-%02m-%02d.%02H"+# time-stamp-end: "$"+# End: