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 +28/−0
- OpenAL.buildinfo.in +8/−0
- OpenAL.cabal +55/−0
- Setup.hs +6/−0
- Sound/OpenAL.hs +181/−0
- Sound/OpenAL/AL.hs +128/−0
- Sound/OpenAL/AL/ALboolean.hs +30/−0
- Sound/OpenAL/AL/Attenuation.hs +211/−0
- Sound/OpenAL/AL/BasicTypes.hs +49/−0
- Sound/OpenAL/AL/Buffer.hs +182/−0
- Sound/OpenAL/AL/BufferInternal.hs +75/−0
- Sound/OpenAL/AL/Doppler.hs +92/−0
- Sound/OpenAL/AL/Errors.hs +88/−0
- Sound/OpenAL/AL/Extensions.hs +102/−0
- Sound/OpenAL/AL/Format.hs +50/−0
- Sound/OpenAL/AL/Listener.hs +150/−0
- Sound/OpenAL/AL/PeekPoke.hs +59/−0
- Sound/OpenAL/AL/QueryUtils.hs +122/−0
- Sound/OpenAL/AL/Source.hs +775/−0
- Sound/OpenAL/AL/SourceState.hs +46/−0
- Sound/OpenAL/AL/String.hs +31/−0
- Sound/OpenAL/AL/StringQueries.hs +34/−0
- Sound/OpenAL/ALC.hs +35/−0
- Sound/OpenAL/ALC/ALCboolean.hs +30/−0
- Sound/OpenAL/ALC/BasicTypes.hs +24/−0
- Sound/OpenAL/ALC/Capture.hs +138/−0
- Sound/OpenAL/ALC/Context.hs +200/−0
- Sound/OpenAL/ALC/Device.hs +223/−0
- Sound/OpenAL/ALC/Errors.hs +93/−0
- Sound/OpenAL/ALC/Extensions.hs +86/−0
- Sound/OpenAL/ALC/QueryUtils.hs +122/−0
- Sound/OpenAL/ALC/String.hs +42/−0
- Sound/OpenAL/Config.hs +233/−0
- Sound/OpenAL/Constants.hs +166/−0
- config.guess +1497/−0
- config.mk.in +8/−0
- config.sub +1608/−0
- configure +8729/−0
- configure.ac +201/−0
- include/HsOpenAL.h.in +30/−0
- include/HsOpenALConfig.h.in +409/−0
- install-sh +295/−0
+ 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: